Jon*_*han 1 .net mono cross-platform c++-cli dynamic-linking
概述:我有一个符合标准的C++ API,它使用Boost库,我想支持它作为Windows,OS X和Linux上的本机,可静态链接的库,我想在Windows和Mono上包装.NET在OS X和Linux上.
细节:目前我已经为所有平台进行本地编译 - 这是使用标准C++和Boost.我还得到它在Windows上编译和运行C++/CLI,但我被迫使用Boost .DLLs.下一步我不知道从哪里开始,因为我从未尝试在*nix系统上使用共享库.我知道Boost在Linux上提供了共享库(我猜想在OS X上也是如此),但是这些只是在我的Visual Studios编译的C++/CLI可执行文件中自动神奇地工作,还是我需要做一些工作?MonoDevelop没有C++/CLI编译器,但据说Visual Studios编译的CLI工作得很好......这是动态链接库让我感到困惑.
只有编译时,C++/CLI程序集才会在Mono上加载/clr:pure.混合模式C++/CLI程序集(使用本机代码的任何程序集,即:boost)将无法在非Windows平台上运行.
您最好的选择是提供C API,并使用P/Invoke调用本机代码.如果您在两个平台上都包含相同的C API,则可跨平台移植.