问候,我很抱歉打扰,我将提出一个问题:

我正在尝试将一些用 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 类添加了公共访问修饰符...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top