17. april 2004 - 00:42
Der er
4 kommentarer og
1 løsning
Nybegynder med DLL filer
Hej, jeg har følgende filer filer i et projekt som bliver compilet til en dll fil:
MyLib.h
#ifdef MYLIBAPI
#else
#define MYLIBAPI extern "C" __declspec(dllimport)
#endif
MYLIBAPI int Add(int nLeft,int nRight);
MyLibFile1.cpp:
#include<windows.h>
#define MYLIBAPI extern "C" __declspec(dllexport)
#include "MyLib.h"
int g_nResult;
int Add(int nLeft,int nRight)
{
g_nResult=nLeft+nRight;
return(g_nResult);
}
Og i et andet project en exefil der skal bruge dll-filen:
MyExeFile1.cpp:
#include<windows.h>
#include "E:\\rodeDir\\dlltest\\MyLib.h"
int main(int argv,char* argc[])
{
int nLeft=10;
int nRight=25;
TCHAR sz[100];
wsprintf(sz,TEXT("%d + %d = %d"),nLeft,nRight,Add(nLeft,nRight));
MessageBox(NULL,sz,TEXT("Calculation"),MB_OK);
wsprintf(sz,TEXT("The result from the ast Add is: %d"),g_nResult);
MessageBox(NULL,sz,TEXT("Last Result"),MB_OK);
return 0;
}
Jeg kan godt compile dll-filen, men jeg kan ikke compile filen der gør brug af dll-filen. Altså myExeFile1.cpp
Hvad gør jeg galt?
20. april 2004 - 14:43
#2
Jeg får at vide at den ikke kan finde g_nResult.
Altså følgende fejl:
Compiling...
MyExeFile1.cpp
E:\rodeDir\brugdll\MyExeFile1.cpp(13) : error C2065: 'g_nResult' : undeclared identifier
Error executing cl.exe.
Creating browse info file...
brugdll.exe - 1 error(s), 0 warning(s)
20. april 2004 - 14:44
#3
Som om jeg ikke får fat i dll filen eller sådan noget.
Jeg kan godt downloade og skabe dll filen i det andet workspace.
Så jeg fatter det ikke helt. Er det den tigtige måde jeg linker på eller hvordan skal jeg ellers gøre...Jeg inkluderer jo bare den .h fil som jeg gør nu...Måske jeg skal gøre noget andet?
27. april 2004 - 16:55
#4
Så vidt jeg kan se, erklærer du ikke g_nResult i MyLib.h. Derfor kan cl ikke finde den når du kompilerer MyExeFile1.cpp (dvs. fejlen opstår før den linker, så på det tidspunkt er den slet ikke nået til at kigge i .dll-filen).
Prøv at tilføje noget i stil med
extern int g_nResult;
i MyLib.h. Det kan være det hjælper.
24. august 2004 - 18:03
#5
Undskyld den bratte afslutning, men jeg har lidt for mange løse ender...Blir nødt til at lukke for nogle af alle mine spg.
Tak for hjællpen. Hvis der er lagt svar får disse point, eller er jeg nødt til at tage dem selv for at lukke alle de her spg.
Mvh.