2

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

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

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

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

编辑:Mac 部分的静态库(.a)而不是动态库(.dylib)的加分点,如果 Mono 甚至可以的话。

4

3 回答 3

3

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

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

于 2011-07-02T05:12:49.250 回答
2

如果您可以为两个库指定相同的名称,则根本不需要更改代码。至少它在 Windows/Linux 中对我来说就像用 C 编写的本机库那样工作。

于 2011-07-03T21:50:11.590 回答
-1

我会用

#define MAC/WINDOWS

#if

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

于 2011-07-02T04:29:06.710 回答