我正在尝试使用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