Dotnet核心在Linux上运行为32位86x



我正在尝试使用Dotnet core 3 控制linux上的RFID读取器

ReaderDynamicLib.dll是主控制器文件,它不是我创建的dll文件。这是制造商提供的sdk文件只在32位上运行,我在windows中尝试过。

我创建了控制台应用程序,将参数发送到ReaderDynamicLib.dll

[DllImport("ReaderDynamicLib.dll")]
public static extern int SetAntenna(int hScanner, int m_antenna_sel, int Address);

像这样在windows上运行良好,但在linux 中

An attempt was made to load program with an incorrect format

我认为linux没有作为32位选项运行

现在可能无关紧要,但为了将来参考,这里的问题是供应商dll可能被编译为在Windows平台上工作(因为你可以在Windows上运行它(。然后,您不能将完全相同的库DllImport转换为。NET程序在linux上运行。经过本机编译以在Windows平台上运行的二进制文件将不会在linux平台上加载。它将不得不针对linux重新编译。

我对您的项目一无所知,但为linux 32位发布应该与一起工作

dotnet publish --runtime linux-x86 sampleProject.csproj

最新更新