我在C#项目中使用了C ++ DLL,DLL里面有一个类,它由外部函数创建和销毁,如:
class myClass
{
int N;
public:
//some elements and some functions
myClass(int n)
{
N=n;
}
};
__declspec(dllexport) myClass * builderF(int n)
{
return new myClass(n);
}
__declspec(dllexport) void destroyerF(myClass * c)
{
delete c;
}
这些都在extern“C”{}体内。
编译器如何让我使用C ++功能是“C”空间?它不仅适用于C代码吗?这是经过测试和运行的(我开始为C#制作一个opencl包装器)。我之前只使用纯C代码。
答案 0 :(得分:9)
extern "C"
不会将编译器更改为C编译器。它
只说任何函数(或函数指针)都会使用
他们界面中的C约定。所以你仍然可以
你可以在函数中用C ++做的任何事情;这是唯一的事情
就像名称修改和调用约定一样
影响。