11.10.2012, 11:34 | #1 |
Участник
|
dll в Ax 3.0
Добрый день, уважаемые знатоки.
В Visual Studio есть такой проект C++: Файл DLLTest.h : Код: int Add(int a, int b); int Get(); Код: // DLLTest.cpp // compile with: /EHsc /LD #include "DLLTest.h" #include <stdexcept> using namespace std; int Add(int a, int b) { return a + b; } int Get() { return 33; } Код: LIBRARY "DLLTest" EXPORTS Add Get X++: static void GJ_DLLTest2(Args _args) { DLL dll = new DLL("C:\\DLLTest.dll"); DLLFunction fAdd, fGet; int r; ; //------------------------------------- fGet = new DLLFunction(dll, "Get"); fGet.returns(ExtTypes::DWord); r = fGet.call(); // отрабатывает "на ура" info(queryValue(r)); // возвращает 33 //------------------------------------- fAdd = new DLLFunction(dll, "Add"); fAdd.returns(ExtTypes::DWord); fAdd.arg(ExtTypes::DWord,ExtTypes::DWord); r = fAdd.call(1,2); // ОШИБКА!!! info(queryValue(r)); //------------------------------------- fAdd.finalize(); fGet .finalize(); dll.finalize(); } Во втором случае, где производится попытка вызова функции с параметрами, выдает следующее сообщение: Цитата:
Значение регистра ESP не было сохранено при вызове функции "Add" в библиотеке DLL "C:\DLLTest.dll". Причиной может являться вызов функции DLL, которая объявлена с неверным числом аргументов.
Направьте, пожалуйста, на путь истинный ))) Последний раз редактировалось York; 11.10.2012 в 11:45. Причина: не верно процитировал def |
|
11.10.2012, 11:55 | #2 |
Участник
|
Добавьте к определению функций WINAPI
X++: int WINAPI Add(int a, int b) ... int WINAPI Get() ...
__________________
Axapta v.3.0 sp5 kr2 |
|
11.10.2012, 13:15 | #3 |
Участник
|
Я наверное шибко тупой, но и в этом случае никак не получается. Компилятор пишет
Цитата:
Ошибка 1 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "Add"...
Может нужно включить какую директиву компилятора? |
|
11.10.2012, 13:56 | #4 |
Участник
|
Цитата:
X++: #include <windows.h> X++: #define WINAPI __stdcall
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: York (1). |
11.10.2012, 14:04 | #5 |
Участник
|
Спасибо огромное! То что надо!
Понятно, что мне следует сначала почитать учебники, а не мучить глупыми вопросами добрых человеков, но хочется быстреько выяснить, если ли принципиальная возможность решения одной пороблемы, и если да, то уже приступить детально к вопросу. Еще раз спасибо. |
|
|
|