桥接非托管类和托管类 我有一个本地C++类,导出到Win32 DLL: class __declspec(dllexport) Manager { ... }
Dll已成功创建。让我们称之为桥接非托管类和托管类 我有一个本地C++类,导出到Win32 DLL: class __declspec(dllexport) Manager { ... },c++,clr,unmanaged,managed,C++,Clr,Unmanaged,Managed,Dll已成功创建。让我们称之为非托管.dll 我想在.Net应用程序中使用这个类。因此,我决定创建托管C++包装器类。因此,我创建了一个新的CLR类库,将Unmanaged.dll设置为链接器的输入 编译托管dll时,我遇到以下错误: 致命错误LNK1107:无效或损坏的文件:无法在0x318读取。(project ManagedBridge中的Unmanaged.dll) 这两个项目都设置为编译为x64。DLL导出查看器显示类的构造函数和方法。所以Dll看起来不错 我缺少什么吗?您不能将DLL
非托管.dll
我想在.Net应用程序中使用这个类。因此,我决定创建托管C++包装器类。因此,我创建了一个新的CLR类库,将Unmanaged.dll
设置为链接器的输入
编译托管dll时,我遇到以下错误:
致命错误LNK1107:无效或损坏的文件:无法在0x318读取。(project ManagedBridge中的Unmanaged.dll)
这两个项目都设置为编译为x64。DLL导出查看器显示类的构造函数和方法。所以Dll看起来不错
我缺少什么吗?您不能将DLL传递给链接器,它不知道如何处理它。DLL通常不适合帮助链接器确定DLL包含您调用的函数。从DLL导出的内容可以是名称的数字。如果是一个数字(“序号”),则会出现问题,链接器将不知道如何将该数字映射到标识符名称。而且名字也不必匹配,名字通常会简化,去掉名字装饰 您必须告诉链接器DLL的导入库。其中包含更多信息,包括序号到名称的映射以及编译器使用的原始修饰名称。导入库是链接DLL时创建的.lib。您将在DLL项目的构建目录中找到它。将其路径添加到链接器的附加依赖项设置