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