Aufruf einer DLL(C++) in VBA bringt Probleme
-
was hätte ich sonst nehmen sollen?? VBA gibts hier nich... da es aber ein fehler in c++ is, hab ich gedacht ich poste es mal hier... falls es wo anders hingehört, können dies ja die Admins hier tun..
-
Eigentlich seh ich da ein C-Programm und kein C++. Und mit windows.h benutzt Du auch die WinAPI (jedenfalls bindest Du sie ein).
Was mir noch auffällt, was soll die #define Zeile machen?? Ein Makro namens export definieren, welches selbst das Makro export benutzt?
Wenn dann eher die Richtung:
bool __declspec (dllexport) __stdcall USEDLL_SEARCHENGINE (char *str1,char *str2);
Vermutlich hat Deine Funktion einfach nirgendwo ein dllexport abbekommen.
-
windows.h war von MS IDE
jetzt hab ich es so und bringt immer noch den selben fehler
#ifdef __cplusplus extern "C" { // C-Deklarationen für C++ #endif #define export __declspec (dllexport) bool __stdcall USEDLL_SEARCHENGINE (char *str1,char `*str2); #ifdef __cplusplus } #endif
-
Wer von VB(A) aus C-DLLs aufruft hat auch nichst besseres verdient.
Warum nicht ActiveX(COM), wenns stattdessen auch kompliziert(er) und
fehlerträchtig geht.
-
@AberHallo
siehe hier
-
Lass mal das #define export vor der Funktionsdeklaration weg.
-
jetzt hab ich
#ifdef __cplusplus extern "C" { // C-Deklarationen für C++ #endif __declspec (dllexport) bool __stdcall USEDLL_SEARCHENGINE (char *str1,char `*str2); #ifdef __cplusplus } #endif
und beim compen sagt der "c:\<...>\searchengine.h(16) : error C2018: Unbekanntes Zeichen '0x60'"
-
b43r_3o=o3 schrieb:
@AberHallo
siehe hier
Was hat das eine mit dem andern zu tun ? Mein Vorschlag war, von C/C++ her eine
COM-Schnittstelle zu verwenden weil sich dadurch die Parameterübergabe wesentlich
vereinfachen würde.Die Umstellung von char* nach BSTR wäre ganz sicherlich nicht problematisch, da
die Funktion doch scheinbar genau einmal für Suche aufgerufen wird da es sich ja
nicht um die Vergleichsfunktion handelt oder ?
-
Wofür ist dieser Strich vor dem zweiten Stern in der Parameterliste?
-
loooooool - danke compt fertig.. aber geht immer noch nich - selbe fehlermeldung
-
Das declspec kann weg:
Da du die DLL in VB brauchst, musst du stdcall nehmen.
Also braucht du als Funktiondsdeklaration nurbool __stdcall USEDLL_SEARCHENGINE (char *str1,char `*str2);
Dafür ist dann halt der Eintrag in der DEF-Datei nötig, den du ja schon gemacht hast.
-
mal noch ne Frage in die Runde:
Das "__declspec (dllexport)" zunm automatischen Exportieren von Funktionsnamen, klappt das nur mit cdecl oder auch mit stdcall oder anderen Konventionen?