#linux #.net-core #32-bit #dotnetcorecli
#linux #.net-ядро #32-разрядный #dotnetcorecli
Вопрос:
Я пытаюсь управлять считывателем RFID в Linux с помощью Dotnet core 3
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 нет опции run as 32bit
Ответ №1:
Вероятно, сейчас это не имеет значения, но для дальнейшего использования проблема здесь в том, что библиотека dll поставщика, вероятно, была скомпилирована для работы на платформе Windows (поскольку вы можете запускать ее в Windows). Затем вы не DllImport
сможете использовать ту же самую библиотеку в программе .NET, работающей в Linux. Двоичный файл, скомпилированный для работы на платформе Windows, не будет загружаться на платформе Linux. Его нужно будет перекомпилировать для Linux.
Ответ №2:
Я ничего не знаю о вашем проекте, но публикация для linux 32 bit должна работать с
dotnet publish --runtime linux-x86 sampleProject.csproj
Комментарии:
1. Нет среды выполнения linux-x86