Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > DLL функция не принимает входной аргумент


Автор: Gun 27.6.2012, 17:43
Есть dll программа, содержащая одну функцию:
Цитата

extern "C" unsigned _int16 _declspec(dllexport) incrementator(unsigned _int16 zm)
{
    zm=zm+1;
    return zm;
}


И есть программа вызывающая эту функцию:

Цитата

System::String^ str;
     unsigned _int16 i,res;
     HINSTANCE hdllinst;

     str=textBox1->Text;
     try {
      i=Int16::Parse(str);
     }
     catch (FormatException^){}
     
     hdllinst = LoadLibraryEx(TEXT("newdll.dll"), 0, DONT_RESOLVE_DLL_REFERENCES);
     if (hdllinst){
                               functionDll fpFunction = (functionDll)GetProcAddress(hdllinst,"incrementator");
     if (fpFunction) {
      res=fpFunction(i);
     }}
     FreeLibrary(hdllinst);

     button1->Text=""+res;


При передаче аргумента в dll функцию, она получает совсем левое число (причем одно и тоже), увеличивает его на единицу и возвращает как результат. То есть результат неверный. Есть также программа Delphi вызывающая данную dll, результат аналогичный. Что делать?

Автор: Randajad 27.6.2012, 17:47
Уйти в другой раздел. Этот раздел посвящен C++, а не C++/CLI.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)