3

我在我的 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 代码。

4

1 回答 1

9

extern "C"不会将编译器更改为 C 编译器。它只是说任何函数(或指向函数的指针)都将在其接口中使用 C 约定。所以你仍然可以在函数中做任何你可以在 C++ 中做的事情;只有名称修改和调用约定会受到影响。

于 2013-07-31T11:50:52.710 回答