' schrieb:Ich hatte genau das selbe Problem.
Im Header meiner dll war ein Datentyp nicht bekannt, PSTCTR, das gab eine Fehlermeldung beim compilen.
Im Header der dll hab ich anschließend die windows.h includiert wodrin dieser Datentyp enthalten ist und anschließend eine neue *.LIB erstellt und es hat alles funktioniert.
Ein weiteres Problem was ich mit dieser dll hatte, vieleicht intressierts oder auch nicht, finde nur das war so ein kleiner holper Stein den man ruhig mal erzaehlen kann.
Tippfehler?? PSTCTR ist kein Windows Datentyp und kommt in meinem Ganzen Windows SDK nirgends vor. Meinst Du vielleicht etwas wie (L)PCTSTR? Das wäre ein Pointer auf ein constant string und je nachdem ob Du UNICODE defined hast oder nicht ein ASCII oder WIDECHAR String.
An sich ist es so dass ein Header File zu einer Library natürlich alle Datentypen die verwendet werden definieren sollte. Aber bei Libraries die in Windows application verwendet werden geht der Programmierer oft davon aus dass windows.h eh schon durch die Anwendung selber included wird.
Im Sinne der Kompatibilität mit späteren Versionen der Library ist es eine schlechte Idee um Header Files einer Library zu verändern. Wenn Du dann upgradest wirst Du das Header File meist auch ersetzen und dann hast Du schon ziemlich sicher vergessen dass Du die frühere Version selber angepasst hast. Besser wäre es vor dem Einbinden Deiner Header Datei ein #include <windows.h> innerhalb des Source Codes zu machen der Deine Library verwendet.
Zitat:Die dll ist in c++ geschrieben worden und ich hatte Probleme eine Funktion in meinem Code aufzurufen. Er erkannte diese einfach nicht, obwohl sie im Header stand.
Sah quasi so aus:
" int test(){xxxx}"
Wenn man jetzt " int test(void){xxxx}" schreibt erkennt der C compiler von cvi diese Funktion auch 
Nein! Er erkennt sie nicht sondern implementiert sie selber. Auch hier hast Du das Problem dass bei Ersetzen des Headers bei einem Update diese Funktion vielleicht geupdatet wurde Du aber in Deinem Source Code halt die alte Version noch verwendest.
Das Problem ist dass der Programmierer der Library leider vergessen hat die Funktionsdeklarationen als extern "C" zu deklarieren. Das verhindert dass der C++ Compiler diese Funktionsnamen dekoriert (myTest(x, y, z) wird dann zu sowas wie myTest$2%34ds%^sd() gemacht) und diese Funktion auch unter diesem Namen exportiert. Da die C++ Funktionsdekoration compilerspezifisch ist ist eine Library mit C++ exported Funktionsnamen im Grossen und Ganzen einfach blöder Quatsch.
Eine einfache Lösung dieses letzten Problems gibt es wirklich nicht.
Rolf Kalbermatter