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

本文关键字:AnyCPU 程序集 生成 SWIG 使用 | 更新日期: 2023-09-27 18:11:52

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

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

看来你得自己卷包装纸了。

我遇到了CLRZMQ出于类似原因使用的解决方案。

他们通过嵌入。dll版本并根据当前平台提取这些版本很好地解决了这个问题:

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

这是他们对这个问题的解决方案,这是相应的讨论,对如何解决这个问题给出了不同的想法。同样有趣的是他们的SafeLibraryHandle我刚刚发现的