首先,我对 C++ 的了解有限,而且我是 pinvoke 的新手。
我有一个库,其中包含一些非常旧的代码,我们想与 C# 一起使用,但当然是旧的,它是在未管理的 C++ 中。我正在寻找为 lib 制作一个 C# dll 包装器。所以将来任何想要使用代码的人都可以使用 dll。但是我可以找到如何导出函数来执行 pinvoke。我尝试了垃圾箱,但没有看到任何东西。还是我只需要从代码中获取功能?下面是垃圾箱。
你需要做什么取决于它是什么类型的库。
在这里小心。我一直在做类似的事情,但对于 Java。
如果您的 C# 代码在 64 位上运行,那么您的 32 位库将无法加载。最好的选择是如果你能掌握源代码并构建 2 个新版本,一个 32 位和 1 个 64 库。
如果您无权访问源代码,一种解决方法是创建一个 32 位可执行文件,该可执行文件调用您的 lib 并且可以作为命令行进程调用(将其输出保留在磁盘文件中)。在这种情况下,您可以使用 64 位系统中的 32 位代码。启动一个新进程等当然会受到惩罚,但取决于它被调用的频率,这可能是可以接受的。