从lib获取函数

时间:2012-09-06 11:11:35

标签: pinvoke wrapper dumpbin

首先,我对C ++的了解有限,我也不熟悉它。

我有一个包含一些非常旧的代码的库,我们希望与C#一起使用,但当然是旧的,它是在无人的C ++中。我期待为lib创建一个C#DLL包装器。所以将来任何想要使用代码的人都可以使用dll。但是我可以找到如何导出函数来做一个pinvoke。我试过dumpbin但没看到任何。或者我只需要从代码中获取函数?下面是dumpbin。

enter image description here

3 个答案:

答案 0 :(得分:2)

您需要做什么取决于它是什么类型的库。

  1. 如果它是一个静态库,那么你需要构建一个DLL并将.lib文件链接到该DLL。然后你的C#代码可以调用你构建的DLL。
  2. 如果它是DLL的导入库,那么您只需直接调用DLL即可。 .lib文件对你没用。

答案 1 :(得分:1)

在这里小心。 我一直在做类似的事情,但是对于Java。

如果您的C#代码在64位上运行,那么您的32位lib将无法加载。 最好的选择是如果你能掌握源代码并构建2个新版本,32位和1 64库。

如果您无法访问源代码,那么可以创建一个32位可执行文件来调用您的lib,并且可以将其作为命令行进程调用(将其输出保留在磁盘文件中)。在这种情况下,您可以使用64位系统的32位代码。当然,启动一个新流程等会受到惩罚,但取决于它被调用的频率是可以接受的。

答案 2 :(得分:0)

“Interop 101”可以帮助您:Part 2使用P / Invoke在C#中调用非托管C ++方法,Part 4使用C ++ / CLI桥。