| Autor |
Nachricht |
Swordfish
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 4181
|
Swordfish Mitglied
01:05:01 15.05.2012 Titel: |
|
Zitieren |
|
 |
hustbaer
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 16057
|
hustbaer Mitglied
03:10:54 15.05.2012 Titel: |
|
Zitieren |
| 314159265358979 schrieb: | | Ist es nicht unter Windows so, dass Funktionen in DLLs immer als __stdcall definiert sein müssen? |
Ist so Usus, aber Muss ist gar nix.
Kannst auch __cdecl oder __fastcall machen oder __super_new_calling_convention_that_only_my_compiler_supports oder was auch immer.
Und natürlich __thiscall, hätte ich bald vergessen. |
_________________ "Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
|
|
 |
minispect
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.05.2012
Beiträge: 6
|
minispect Mitglied
11:48:54 15.05.2012 Titel: |
|
Zitieren |
Hallo!
Ich hab jetzt DependencyWalker benutzt und festgestellt, dass die Funktionen in der dll mit einem Unterstrich anfangen
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <cstdlib>
#include <iostream>
#include <windows.h>
#include <TofDaqDll.h>
#include <string>
using namespace std;
typedef double (_stdcall *FNPTR)(void);
int main()
{
HINSTANCE hinstLibrary = LoadLibrary("TofDaqDll.dll");
FNPTR pFn;
if (!hinstLibrary) {
cout << "LoadLibrary failed: " << GetLastError() << endl;
return 1;
}
pFn=(FNPTR)GetProcAddress(hinstLibrary, "_TwGetDllVersion");
if (!pFn) {
cout << "GetProcAddress failed: " << GetLastError() << endl;
return 1;
}
double result = pFn();
cout << result << endl;
FreeLibrary(hinstLibrary);
system("PAUSE");
return 0;
} | |
Das funktioniert soweit! Vielen Dank für Eure Hilfe!
Die anderen Funktionen der dll haben eine Rückgabevariable "TwRetVal". Wenn ich so eine Funktion aufrufe, bleibt das Programm beim Ausführen stehen. Wie gehe ich richtig mit diesem TwRetVal um? |
|
|
|
 |
hustbaer
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 16057
|
hustbaer Mitglied
12:50:23 15.05.2012 Titel: |
|
Zitieren |
Dazu müsste man nun wissen was TwRetVal ist, nen?
BTW: du musst auch nix dynamisch laden, mach einfach so
| C++: | // extern "C" __declspec(dllimport) double TwGetDllVersion(void);
extern "C" __declspec(dllimport) double __stdcall TwGetDllVersion(void); | | |
_________________ "Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
|
|
 |
minispect
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.05.2012
Beiträge: 6
|
minispect Mitglied
13:49:36 15.05.2012 Titel: |
|
Zitieren |
darüber schweigt leider die dll-Beschreibung.
zum Befehl
TW_DAQ_API TwRetVal TwStartAcquisiton(void);
steht z.B.
Return value type: TwRetVal
Value kann z.B. TwAcquisitonActive, TwTimeout, TwSuccess, TwError sein. |
|
|
|
 |
hustbaer
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 16057
|
hustbaer Mitglied
18:54:44 15.05.2012 Titel: |
|
Zitieren |
Hast du ein Header-File zu der DLL?
Ja?
Dann steht da drin was TwRetVal für nen Typ hat.
Ich meine, irgendwoher musst du doch auch wissen was TwAcquisitonActive, TwTimeout, TwSuccess, TwError etc. sein sollen. Das werden ja wohl Symbolische Konstanten sein (=Zahlen), aber welcher Name für welche Zahl steht kannst du ja schwer erraten.
Und dort wo du die Zahlen zu den Namen findest, wirst du wohl auch finden was TwRetVal für ein Typ ist.
Und im Zweifelsfall halt int, nen? |
_________________ "Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|