Я пишу программу для встроенного linux на процессоре ARM в .net, которая использует mono для выполнения.Я обнаружил, что могу просто скомпилировать на своем компьютере архитектуру x86 или x64, скопировать каталог Debug в linux и запустить программу, используя моно myProgram.exe.Программа работает идеально, как это, и моно, кажется, заботится о несоответствии архитектуры.Это было верно до сегодняшнего дня, когда я попытался включить внешнюю собственную DLL.
У меня есть как x86, так и x64-битная архитектура внешней DLL, и обе прекрасно работают в среде рабочего стола.У меня есть класс shim, который использует [DllImport] для загрузки внешних функций.Однако, когда я пробую это на встроенном Linux с Mono, я получаю исключение BadImageFormat.Я предполагаю, что Mono каким-то образом переводит скомпилированные библиотеки DLL в исполняемый файл при запуске, но не делает то же самое для внешнего.
Некоторая другая информация: 1. У меня нет источника для собственной внешней библиотеки,У меня есть x86, x64 и библиотека .so.2. Я попытался создать управляющую оболочку C ++, которая обращается к .so, но не может его скомпилировать на рабочем столе, поскольку Windows не распознает файл .so.
Некоторые мысли: 1. Есть лиспособ встраивания нативной DLL в управляемую, чтобы Mono также перенесла нативную DLL?2. Могу ли я связать файл .so с управляемым проектом C ++?3. Есть ли способ сказать Mono, чтобы он включал эту Dll во время выполнения?
В конечном счете, я ищу решение, которое обернуто в exe, которое позволяет мне просто запустить его, как я делал раньше, и контролироватьродная система.