есть функция RUN которая берет значение, полученное с листбокса диалога, передает его в подключаемую DLL библиотеку, которая должна приплюсовать к этому значению 3 и вернуть в RUN результат. Потом функция RUN выводит результат не экран.
вот что накодил...
Код:
void CMyFrameWin::OnRun()
{
/*
char s[80]; // проверка доходит ли Number до передачи в DLL
CClientDC dc(this); // проверка доходит ли Number до передачи в DLL
wsprintf(s,"Number is %d",Number); // проверка доходит ли Number до передачи в DLL
dc.TextOut(100,200,s); // проверка доходит ли Number до передачи в DLL
*/
int res;
HINSTANCE hDll;
char s[100];
hDll=::LoadLibrary("MyDll");
typedef int (*FUN)(int);
FUN func;
func=(FUN)::GetProcAddress(hDll, "calc");
res=(*func)(Number);
sprintf(s,"%f", res);
MessageBox(s,"Result");
//создание и запись результата в файл
FILE *result;
result=fopen("result.txt","w");
fprintf(result,"%f",res);
fclose(result);
}
значение Number в функцию RUN доходит нормально (проверка выводом на экран без использования DLL)
собственно сам код DLL библиотеки: MyDll
Код:
#include "stdafx.h"
#include <conio.h>
int calc(int Number)
{
int r=Number;
int res;
res=r+3;
return res;
}
и код файлика
MyDll.def
Код:
LIBRARY "MyDll"
DESCRIPTION 'This library has one function'
EXPORTS
calc @1
независимо от того какое значение Number получает функция RUN от листбокса диалога (а получает постоянно точно то же что я выбрал в диалоге, я проверял без подключения DLL простым выводом) получаем постоянно в результате НОЛЬ...
я уже хз где я мог втыкануть.... может тому кто долго не втыкал этот бред на свежую голову все покажется просто и укажет на траблу..
Заранее спасибо за любой ответ.