Hallo,
bisher habe ich überwiegend mit Delphi gewerkelt und benötige jetzt aber eine C++-DLL, die mir die Funktionen einer Delphi-DLL bereitstellt.
Das DLLHandle erhalte ich auch noch mit LoadLibrary aber danach erhalte ich immer einen NULL-Wert beim Aufruf von GetProcAddress. Das gleiche Problem habe ich auch beim Aufruf einer unter C++ erstellten DLL (s. Beispiel)
Was mache ich da falsch ?
Gruß
Juergen
//xxxDLL.h
__declspec(dllexport) double fnDMin(double _v1, double _v2);
__declspec(dllexport) int fnDMinMax(double _v1, double _v2, double &min, double &max);
// xxxDLL.cpp
__declspec(dllexport) double fnDMin(double _v1, double _v2)
{
if (_v1 < _v2)
{
return _v1;
} else {
return _v2;
}
}
__declspec(dllexport) int fnDMinMax(double _v1, double _v2, double &min, double &max)
{
if (_v1 < _v2)
{
min = _v1;
max = _v2;
}
else
{
min = _v2;
max = _v1;
}
return 0;
}
// DLLTester.h
typedef double (*MinDLL)(double, double);
typedef int (*MinMaxDLL)(double, double, double *, double *);
// DLLTester.cpp
{
MinDLL pfnMin;
MinMaxDLL pfnMinMax;
// DLL laden
HINSTANCE hDLL = LoadLibrary("xxxDLL.DLL");
if (hDLL != NULL){
pfnMin = (MinDLL)GetProcAddress(hDLL, "fnDMin");
if (pfnMin != NULL)
{
dret = pfnMin(v1, v2);
cout << dret;
}
pfnMinMax = (MinMaxDLL)GetProcAddress(hDLL, "fnDMinMax");
if (pfnMinMax != NULL)
{
iret = pfnMinMax(v1, v2, &dmin, &dmax);
cout << "Min: " << dmin << "Max: " << dmax << endl;
}
}
// DLL freigeben
FreeLibrary(hDLL);
}
bisher habe ich überwiegend mit Delphi gewerkelt und benötige jetzt aber eine C++-DLL, die mir die Funktionen einer Delphi-DLL bereitstellt.
Das DLLHandle erhalte ich auch noch mit LoadLibrary aber danach erhalte ich immer einen NULL-Wert beim Aufruf von GetProcAddress. Das gleiche Problem habe ich auch beim Aufruf einer unter C++ erstellten DLL (s. Beispiel)
Was mache ich da falsch ?
Gruß
Juergen
//xxxDLL.h
__declspec(dllexport) double fnDMin(double _v1, double _v2);
__declspec(dllexport) int fnDMinMax(double _v1, double _v2, double &min, double &max);
// xxxDLL.cpp
__declspec(dllexport) double fnDMin(double _v1, double _v2)
{
if (_v1 < _v2)
{
return _v1;
} else {
return _v2;
}
}
__declspec(dllexport) int fnDMinMax(double _v1, double _v2, double &min, double &max)
{
if (_v1 < _v2)
{
min = _v1;
max = _v2;
}
else
{
min = _v2;
max = _v1;
}
return 0;
}
// DLLTester.h
typedef double (*MinDLL)(double, double);
typedef int (*MinMaxDLL)(double, double, double *, double *);
// DLLTester.cpp
{
MinDLL pfnMin;
MinMaxDLL pfnMinMax;
// DLL laden
HINSTANCE hDLL = LoadLibrary("xxxDLL.DLL");
if (hDLL != NULL){
pfnMin = (MinDLL)GetProcAddress(hDLL, "fnDMin");
if (pfnMin != NULL)
{
dret = pfnMin(v1, v2);
cout << dret;
}
pfnMinMax = (MinMaxDLL)GetProcAddress(hDLL, "fnDMinMax");
if (pfnMinMax != NULL)
{
iret = pfnMinMax(v1, v2, &dmin, &dmax);
cout << "Min: " << dmin << "Max: " << dmax << endl;
}
}
// DLL freigeben
FreeLibrary(hDLL);
}
Comment