Gre*_*rey 1 .net c# c++ dll dllimport
我写了一个visual c ++ win32控制台应用程序,我写了它并测试了它
win32控制台项目
.然后我切换到
win32项目
并导入所有源文件并为其创建一个dll.通过标记我想要导出的类
#define DllExport __declspec( dllexport )
class DllExport theClass {
}
Run Code Online (Sandbox Code Playgroud)
它工作,并生成DLL.然后我创建了另一个c#项目,并希望将dll添加到项目中.通过引用 - >添加引用 - >浏览器.然后我选择那个DLL.然后它给了我一个错误
无法添加对'''''''的引用.请确保该文件是可访问的,这是一个有效的程序集或com组件.
谁知道我在哪里生错误/生成/导入dll?
谢谢
"添加引用"对话框仅适用于包含元数据(托管代码)或类型库(COM服务器)的DLL.您的DLL不适合该帐单,您只能使用C#代码中的[DllImport]属性来使用P/Invoke编组程序来调用非托管DLL入口点.
这不可能是本机C++类,就像您尝试的那样,托管代码没有可靠的机制来分配非托管内存并调用本机C++类的构造函数(和析构函数).由于难以找到构造函数和析构函数代码,P/Invoke编组器无法知道对象的大小.C++语言不会生成知道此必需信息所需的元数据.
如果你想追求P/Invoke,那么编写一个普通的全局函数,用extern"C",__ declspec(dllexport)和(可选)__stdcall修饰.
如果要导出C++类,那么唯一的途径是使用C++/CLI语言并为本机C++类编写"ref class"包装器.
或者你可以写一个COM coclass,Windows中的通用粘合剂..NET很好地支持,如果你之前从未编写过COM代码,可能不是你想要追求的东西.ATL是获得成功的最好方式.
| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |