我正在使用Mono在一组本机公开的命令上编写包装器。
该集合是相同的(命令和签名),但是它通过Windows中的DLL和Mac中的DyLib公开。
我想知道是否有一种方法让我只创建一个包装器.NET / Mono DLL,同时让它仍然找到自己导入的正确库。
如果是这样,语法是什么?如果没有,那么将DllImport与我编译的2个不同操作系统分开的编译器定义是什么?
编辑:对于Mac部分,静态库(.a)而不是动态库(.dylib)的加分点,如果使用Mono即可。
答案 0 :(得分:3)
您可能希望发送一个dll map配置文件,告诉Mono在每个平台上加载哪个库:
答案 1 :(得分:2)
如果您可以为两个库指定相同的名称,则根本不需要更改代码。至少它在Windows / Linux中对我有用,用C语言编写本机库。
答案 2 :(得分:-1)
我会用
#define MAC/WINDOWS
和
#if
在你的代码中。 然后在编译时使用-define WINDOWS或-define MAC,以便调用DLL。所以至少你会有一个代码库,或者你需要检查环境,但这很容易变得棘手。