【发布时间】:2015-08-11 11:28:49
【问题描述】:
我有一个在 VB.Net 中开发的 DLL。我试图从我的 vc++ 代码中调用它的函数。 dll 已使用 LoadLibrary 函数成功加载。 但是当我尝试调用 dll 中的任何函数时,它会给出一个空指针异常。
我使用了 dumpbin 命令来确认我的 dll 中的函数参数。但它没有列出任何功能。可能是dll有问题还是dumpbin只支持几个dll?请帮忙!
C:\Program Files (x86)\Microsoft Visual Studio 11.0>dumpbin ECR.dll Microsoft (R) COFF/PE Dumper 版本 11.00.51106.1 版权所有 (C) 微软公司。保留所有权利。
转储文件 ECR.dll
文件类型:DLL
总结
2000 .reloc 4000 .rsrc 2000 .sdata 16000 .text
【问题讨论】:
-
试试
dumpbin /exports ECR.dll看看你有没有列出的功能。 -
我试过 dumpbin /exports ECR.dll 并得到相同的结果。没有列出任何功能。
-
是否有任何函数从该 DLL 导出?
-
我看不到 dll 代码。它是由第三方提供的。但是,如果我在 windows 项目中加载 dll,我可以成功调用这些函数。
-
VB.NET 类库项目永远不会有任何导出。从非托管 C++ 代码调用 vb.net 代码是一项重要的操作,C++ 代码需要首先加载和初始化 CLR。它必须做一些事情来处理此类代码抛出异常的高可能性。标准技术是制作 vb.net 代码 [ComVisible] 或使用 IMetaData 托管 CLR。由于错误报告非常差,常用但一个坏主意是编写使用 __declspec(export) 和 Giesecke 的 Unmanaged Exports 库的 C++/CLI 包装函数。
标签: visual-studio-2012 visual-c++ dll dumpbin