2

您好,很抱歉打扰,我会提出这个问题:

我正在尝试在 DLL 中导出一些用 c++ 编写的函数,以便将它们导入在 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,但是当我打开它时使用对象浏览器,它是完全空的,既没有类也没有对象被导出并准备好使用

你能帮我吗?谢谢最好的问候

4

1 回答 1

3

使用托管 C++ 编译 DLL 怎么样?然后你只需要像这样向类添加一个引用:

namespace SOMENAMESPACE
{
                public ref class SOMECLASS
                {
                               public: 
                               SOMETYPE func(param A,char b[tot]);

                };
}

在其他项目中成功编译和引用后,该类应该是可见的。导出本机 C++ 并不是真正可移植的,每个编译器都会产生不同的结果,并且从 C# 中绑定很繁琐......

编辑:将公共访问修饰符添加到 ref 类...

于 2010-01-18T11:33:23.260 回答