我在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;
}
这些都是外部的“C”{}体.
编译器如何让我使用C功能是“C”空间?它不仅适用于C代码吗?这是经过测试和运行的(我开始为C#制作一个opencl包装器).我之前只使用纯C代码.
解决方法:
extern“C”不会将编译器更改为C编译器.它
只说任何函数(或函数指针)都会使用
他们界面中的C约定.所以你仍然可以
你可以在C函数中做的任何事情;这是唯一的事情
就像名称修改和调用约定一样
影响.