2016-09-09 4 views
0

Я пытаюсь создать совместимую dll, написанную на C# для использования в Microsoft NAV 2016, для разработки драйвера фискального принтера. В моем проекте C# я звонил в другие DLL-функции (поставляемые компанией Bematech, в 32-битной и неуправляемой).Взаимодействие C# и NAV 2016

Вызовы функций DLL неуправляемые (и протестированы из .EXE) я делаю следующим образом:

[DllImport ("BemaFi32.dll")] 
public static extern int Bematech_FI_ProgramaAlicuota (Aliquot string, int ICMS_ISS); 

Когда я пытаюсь запустить его из NAV2016 я получаю следующее сообщение об ошибке: .A вызов к «MyAssembly» не удалось с этим сообщением: вы пытаетесь загрузить программу с неправильным форматом. Исключение из HRESULT: 0x8007000B

Я думаю, ошибка, потому что DLL не управляется или 32-разрядная версия (если это проблема, становится сложнее, потому что, видимо, нет 64-разрядной версии). Не как решить проблему. Я надеюсь, что вы можете мне помочь. Спасибо.

ответ

0

NAV не может работать с неуправляемым кодом. Единственный способ - написать dll-оболочку, которая может быть вызвана из NAV. Microsoft делает то же самое с Office SDK, например ...

Cheers!

0

Проблема была не внедренный длл неуправляемый, было то, что новый длл быть 32 бит не был совместим с клиентом СЧА, решение было изменить клиента 32bit следующим образом:

Переименовать файл в Microsoft .Dynamics.Nav.Client.X64.exe Microsoft.Dynamics.Nav.Client.exe, а затем файл Microsoft.Dynamics.Nav.Client.X86.exe переименуйте файл в Microsoft.Dynamics.Nav.Client. Exe.

и изменение C/AL в переменной объявлен призыв к DLL Свойство Значение Да RunOnClient

Смежные вопросы