首先,我对C++的了解有限,我也是新手来进行拼写。从函数库中获取函数
我有一些很老的代码中有一个图书馆,我们想用C#,但当然是老它在unmanged C++使用。我期待为lib创建一个C#dll包装器。所以将来任何想使用代码的人都可以使用dll。不过,我可以找到如何导出函数做一个pinvoke。我尝试过dumpbin,但没有看到任何。或者我只需要从代码中获取功能?下面是dumpbin。
首先,我对C++的了解有限,我也是新手来进行拼写。从函数库中获取函数
我有一些很老的代码中有一个图书馆,我们想用C#,但当然是老它在unmanged C++使用。我期待为lib创建一个C#dll包装器。所以将来任何想使用代码的人都可以使用dll。不过,我可以找到如何导出函数做一个pinvoke。我尝试过dumpbin,但没有看到任何。或者我只需要从代码中获取功能?下面是dumpbin。
你需要做什么取决于它是什么样的图书馆。
这里小心点。 我一直在做类似的事情,但对于Java。
如果您的C#代码在64位上运行,那么您的32位lib将无法加载。 最好的选择是,如果你能得到源代码并构建2个新版本,32位和1 64库。
如果您无法访问源代码,则可以创建一个32位可执行文件,该可执行文件调用您的lib并可作为命令行进程(将其输出保留在磁盘文件中)调用。在这种情况下,您可以使用来自64位系统的32位代码。当然,启动一个新流程会有一些惩罚,但取决于它被称为可能被接受的频率。
那么,在这种情况下,除了让C#代码指向x86以外,别无选择。然后它都很好。 –
@DavidHeffernan在大多数情况下,终端用户和系统管理员都无法接受这种情况。我从Java经验讲,但我没有理由在.NET中思考,它会有所不同。现在大多数人拥有64位操作系统,默认安装64位运行时环境。您的x86库不会加载到这样的系统上,大多数人认为在64位(虚拟)硬件上安装32位运行时是不可接受的。 – Gert
32位进程在64位Windows上运行非常漂亮。完全没有问题。 –