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 |
|
|
|