MSVC.
, ( ), . , .
, :
1) , . , , C- extern "C":
7.5.3 [ ]
, C , "C" ++, "++". [:
complex sqrt(complex);
extern "C" { double sqrt(double);
-end ]
, C namespace s, extern "C" , . ...
3) , . :
main.h
#ifndef MAIN_API
# define MAIN_API __declspec(dllexport)
#endif
namespace x
{
extern "C" MAIN_API void foo();
};
namespace y
{
extern "C" MAIN_API void foo();
};
main.cpp
#include <cstdlib>
#include <iostream>
using namespace std;
#define MAIN_API __declspec(dllexport)
#include "main.h"
void x::foo()
{
cout << "x::foo()\n";
}
void y::foo()
{
cout << "y::foo()\n";
}
int main()
{
}
, extern "C" -ed x::foo() y::foo() , : foo()
2) . C-ABI , , , , . - namespace . - :
#ifndef MAIN_API
# define MAIN_API __declspec(dllexport)
#endif
namespace x
{
extern "C" MAIN_API void x_foo();
};
namespace y
{
extern "C" MAIN_API void y_foo();
};