Ich verwende Microsoft Visual C++ 2010 Express, unter Windows XP.Externe Punkte zu 0x00000000
Ich habe eine Anwendung, die eine DLL erzeugt, eine Header-Datei in dieser Anwendung deklariert auch einen Zeiger auf einen BUFFER als extern. Um diese DLL mit dem System zu registrieren, ziehe ich es auf das Regsvr32.exe-Symbol im Ordner System32.
Ich habe eine andere Anwendung, die die Verwendung dieser DLL durch Initialisieren und Aufrufen von Funktionen von es testet. Diese Anwendung greift auf denselben BUFFER wie die DLL zu, indem sie diese externe Deklaration verwendet.
Zuerst, als ich den Visual Studio-Debugger zum Debuggen der Testanwendung verwendet habe, konnte ich den Inhalt des externen BUFFER aus der geladenen DLL sehen. Nach dem wiederholten Debuggen dieser Anwendung zeigt der BUFFER jetzt jedoch nicht seine Speicheradresse an, sondern nur "0x0000000", so dass ich die Daten nicht sehen kann.
Weiß jemand, warum das sein könnte? Ich kann nicht verstehen, warum es früher funktioniert hat, aber jetzt nicht. Ich habe überhaupt keinen Aspekt dieses Teils des Quellcodes geändert. Ist es OK, auf den BUFFER in der DLL zuzugreifen, indem Sie einen externen Zeiger wie diesen verwenden, oder gibt es einen besseren Weg?
Danke für Ihre Hilfe.
Ich habe 'C++' und 'Visual-C++' zu Ihrer Frage getaggt, da es eher auftaucht als nur 'extern' :) –
Ist es nur' extern' oder 'dllexport' /' dllimport'?Randnotiz: Der Aufruf von regsvr32 ist nur mit COM-DLLs sinnvoll. –