ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
692
692
EMPFEHLEN
-
Hi,
ich versuche eine Funktion aus einer dll aufzurufen. Die Funktion befindet sich dort in einer Klasse. funktionen die nicht in der Klasse sind kaann ich bereits aufrufen, aber wie mach ich das fuer Klassen funktionen?
Hier mal mein Beispiel Programm:
Fuer die DLL:
<<<dlltest.h>>>
<<<dlltest.cpp>>>PHP-Code:#ifndef _DLLTEST_H_
#define _DLLTEST_H_
#include <iostream>
#include <windows.h>
extern "C" __declspec(dllexport) void NumberList();
class MyClass
{
private:
MyClass();
~MyClass();
public:
void LetterList();
};
#endif
...und fuer die AnwendungPHP-Code:#include "dlltest.h"
using namespace std;
void NumberList() {
cout << "NumberList(): ";
for(int i=0; i<10; i++) {
cout << i << " ";
}
cout << endl;
}
MyClass::MyClass(){}
MyClass::~MyClass(){}
void MyClass::LetterList()
{
cout << "LetterList(): ";
for(int i=0; i<26; i++) {
cout << char(97 + i) << " ";
}
cout << endl << endl;
}
Wie kann ich die Funktion "LetterList" in der main.cpp aufrufen?PHP-Code:#include <windows.h>
#include <iostream>
#include <conio.h> //wait on user reaction - _getch() -
typedef void (WINAPI* cfunc)();
using namespace std;
cfunc NumberList;
cfunc LetterList;
int main() {
cout << "Loading library...";
HINSTANCE hLib=LoadLibrary("TheDLL.dll");
if(hLib==NULL)
{cout << "Faild! Unable to load library!" << endl;}
else
{cout << "Done!" << endl;}
cout << "Loading function...";
NumberList=(cfunc)GetProcAddress((HMODULE)hLib, "NumberList");
if((NumberList==NULL))
{
cout << "Faild! Unable to load function." << endl;
_getch();//wait on user reaction
}
else
{
cout << "Done!" << endl;
NumberList();
}
FreeLibrary((HMODULE)hLib);
_getch();//wait on user reaction
return 0;
}
Danke schon mal
Stefan
-
05.06.09 13:12 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.Kannst du nicht, denn es ist eine nicht-statische Methode. Und es würde dir auch nicht s nützen. Du brauchst ja erstmal eine Instanz der Klasse bevor du Methoden aufrufen kannst.
Dazu schreibst du dir am besten eine Wrapper-Funktion die dir einen Zeiger auf ein neues Objekt der Klasse zurückgibt. Dann kannst du ganz normal über den Zeiger auf die Methoden zugreifen.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Danke fuer die schnelle Antwort. Ich les mal noch ein bisschen was ueber Wrapper Funktionen und so. Bin einsteiger bei der C++ programmierung.
-
Hi,
also ich hab das jetzt uebers Wochenende versucht, aber ohne Erfolg
Hast du vlt ein Link der das naeher beschreibt wie das geht, oder wonach ich googeln kann?
Ähnliche Themen
-
Funktionen per random aufrufen
Von studio54 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 14.10.07, 21:11 -
Funktionen aufrufen.
Von soa im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 29.03.07, 08:49 -
Funktionen aufrufen
Von branko im Forum Flash PlattformAntworten: 4Letzter Beitrag: 08.02.06, 14:30 -
Mit SWT Win API Funktionen / Funktionen aus beliebigen DLLs aufrufen.
Von Thomas Darimont im Forum JavaAntworten: 9Letzter Beitrag: 10.05.05, 22:03 -
PHP-Funktionen über die URL aufrufen
Von bastiglasl im Forum PHPAntworten: 1Letzter Beitrag: 21.05.04, 16:54





Zitieren

Login






