c# - 使用 SWIG 为 C# 生成 AnyCPU 程序集

标签 c# c++ swig

是否可以使用 SWIG 创建 AnyCpu 程序集?我编译了 x86 和 x64 二进制文件 (c++),并且能够生成 SWIG P/Invoke Wrapper。但是包装器依赖于调用的 native dll(特定于 CPU)。但我喜欢让可执行文件决定而不是拥有两个不同的可执行文件的想法。如果这有帮助,我会把 dll 放在单独的文件夹中(例如命名为 x64/x86)。还是我必须用 C# 编写一个手工包装器来决定加载正确的 dll?

感谢您的输入。

最佳答案

看来您必须自行包装。

出于类似原因,我发现了 CLRZMQ 使用的解决方案。

他们通过嵌入两个 .dll 版本并提取符合当前平台的版本,很好地解决了这个问题:

他们通过使用 Environment.Is64BitProcess 并在提取和加载正确的 dll 之前添加 x86 或 x64 后缀 + 版本字符串来确定运行平台。

这里是 their solution to the problem这是corresponding discussion这对如何解决它给出了不同的想法。同样有趣的是他们的 SafeLibraryHandle这是我刚刚发现的。

关于c# - 使用 SWIG 为 C# 生成 AnyCPU 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24614692/

相关文章:

c# - 测试 MassTransit 订阅者

c++ - boost::enable_if_c 似乎不起作用

python - 痛饮,py + C : no attribute under pointer

java - 在 Windows 中将 SWIG 生成的文件构建到 DLL 中

c# - 清除 ASP.NET 中的文本框历史记录

c# - 如何 IKVM Apache POI

c# - 为什么在 WPF 中将 INotifyPropertyChanged 与绑定(bind)一起使用?

c++ - 如何为指针和动态内存分配定义模板?

c++ - 带有 std::map<T*, U> 的程序是否具有明确定义的行为?

python - 使用 SWIG Controller 将 python 中的 numpy 函数传递给 C++