在 C# 应用程序中导出 C++ 函数
-
21-09-2019 - |
题
问候,我很抱歉打扰,我将提出一个问题:
我正在尝试将一些用 C++ 编写的函数导出到 DLL 中,以便将它们导入到在 Visual Studio 上运行的 C# 应用程序中。我按照以下代码中的报告进行导出,
tobeexported.h:
namespace SOMENAMESPACE
{
class __declspec(dllexport) SOMECLASS
{
public:
SOMETYPE func(param A,char b[tot]);
};
}
tobeexported.cpp:
#include "stdafx.h"
#include "tobeexported.h"
...
using namespace SOMENAMESPACE;
SOMETYPE SOMECLASS:: func(param A,char b[tot])
{
...some stuff inside...
}
DLL是狂热创建的,并且代码已经由CLR管理(使用拆卸软件(反射器)),并包含导出的功能,然后我在我的C#应用程序中“添加参考”并找到DLL,但是当我打开它时使用对象浏览器,它是完全空的,既没有导出又可以使用对象
你能帮我吗?最好的问候
解决方案
使用托管 C++ 来编译 DLL 怎么样?然后你只需向类添加一个引用,如下所示:
namespace SOMENAMESPACE
{
public ref class SOMECLASS
{
public:
SOMETYPE func(param A,char b[tot]);
};
}
在其他项目中成功编译和引用后,该类应该是可见的。导出本机 C++ 并不是真正可移植的,每个编译器都会产生不同的结果,并且从 C# 内部绑定起来很乏味......
编辑:向 ref 类添加了公共访问修饰符...
不隶属于 StackOverflow