Windows XPでMicrosoft Visual C++ 2010 Expressを使用しています。Extern point to 0x00000000
私はDLLを生成するアプリケーションを1つ持っています。このアプリケーションのヘッダーファイルは、BUFFERへのポインタをexternとして宣言しています。 このDLLをシステムに登録するには、system32フォルダ内のregsvr32.exeアイコンにドラッグします。
私は、このDLLの使用をテストし、そのDLLから関数を初期化して呼び出します。このアプリケーションは、このextern宣言を使用して、DLLと同じBUFFERにアクセスします。
まず、Visual Studioデバッガを使用してテストアプリケーションをデバッグすると、ロードされたDLLからextern BUFFERの内容がわかりました。しかし、このアプリケーションを繰り返しデバッグした後、BUFFERはそのメモリアドレスを表示しません。単に "0x0000000"なので、データを見ることはできません。
これは誰でも知っていますか?私はなぜそれが今まで働いていたのか理解できませんが、今はありません。私はこの部分のソースコードを一切変更していません。 このようなexternポインタを使ってDLLのBUFFERにアクセスしてもよろしいですか、それとも が良いですか?
ありがとうございました。
「extern」ではなく「C++」と「Visual-C++」というタグが付いています:) –
「extern」または「dllexport/dllimport」ですか?注:regsvr32の呼び出しは、COM DLLでのみ意味があります。 –