0

我在 Ubuntu 的一个目录中有以下两个文件:

program.exe
RFIDAPI.dll

program.exe使用 Visual C# Express 作为“控制台应用程序”在 Windows 7 机器上编译

RFIDAPI.dll是实现 API 以通过以太网与他们的设备通信的公司提供给我的一个库。

当我./program.exe在 Ubuntu 机器上运行时,mono-devel 找不到动态库:

Unhandled Exception: System.DllNotFoundException: RFIDAPI.dll
    at(wrapper managed-to-native) Namespace.RFID_Class:Method_Call ()

该程序在 Windows 上运行良好,条件相同。知道如何让这个程序使用 mono-devel 链接到 Ubuntu 上的 DLL 吗?

4

2 回答 2

1

一个简单的调试有助于指出问题

export MONO_LOG_LEVEL=debug
./program.exe
...

此页面包含我正在寻找的所有信息: http ://www.mono-project.com/DllNotFoundException

于 2013-06-12T01:23:01.963 回答
0

唯一可行的解​​决方案是询问提供 DLL 的公司是否有适合您的特定发行版(Ubuntu 版本和 Linux 内核版本)的 Linux 库,您可以链接到该库。

每个平台处理本机代码库的方式不同,而且这些库在平台之间不兼容。因此,不可能以与平台无关的方式链接到特定于平台的库(例如 Windows DLL)。

MONO 是 .NET 运行时的跨平台重新实现。它旨在提供为非 Windows 操作系统编写 .NET 应用程序的能力,并提供一个合理一致的框架,使您能够轻松地移植现有的 .NET 应用程序。它不是 Windows 模拟器,因此它不能使用 Windows 特定的代码,其中包括任何 Windows 特定的库。

于 2013-06-12T00:58:21.823 回答