单声道DLL打开相应的Windows / Mac DLL / DyLib

时间:2011-07-02 04:15:08

标签: macos mono native dllimport dylib

我正在使用Mono在一组本机公开的命令上编写包装器。

该集合是相同的(命令和签名),但是它通过Windows中的DLL和Mac中的DyLib公开。

我想知道是否有一种方法让我只创建一个包装器.NET / Mono DLL,同时让它仍然找到自己导入的正确库。

如果是这样,语法是什么?如果没有,那么将DllImport与我编译的2个不同操作系统分开的编译器定义是什么?

编辑:对于Mac部分,静态库(.a)而不是动态库(.dylib)的加分点,如果使用Mono即可。

3 个答案:

答案 0 :(得分:3)

您可能希望发送一个dll map配置文件,告诉Mono在每个平台上加载哪个库:

http://www.mono-project.com/Config_DllMap

答案 1 :(得分:2)

如果您可以为两个库指定相同的名称,则根本不需要更改代码。至少它在Windows / Linux中对我有用,用C语言编写本机库。

答案 2 :(得分:-1)

我会用

#define MAC/WINDOWS

#if

在你的代码中。 然后在编译时使用-define WINDOWS或-define MAC,以便调用DLL。所以至少你会有一个代码库,或者你需要检查环境,但这很容易变得棘手。