0

__declspec(dllexport) を使用して dll からグローバル変数をエクスポートし、__declspec(dllimport) を使用してクライアント exe にインポートしています。

dll のグローバル変数は、別のスレッドで時間とともに更新されています。この更新されたデータをクライアント .exe で受信したいのですが、取得できません。クライアントexeでタイマーを使用してデータを読み取るたびに、グローバル変数の唯一の初期値が得られます。

そのような行動の説明は何ですか?達成したいことを達成するために何ができますか?dll からエクスポートされた get() および set() 関数を含めないオプションはありますか?

dll からエクスポートされるコードは次のとおりです。

typedef struct{
    int iTotalQueues;
    int iCurrentQueue;
    wchar_t szQueueName[100];
}UPDATE_STATUS_DATA;

__declspec(dllexport) UPDATE_STATUS_DATA UpdateStatusData;

この構造体のメンバーは、長時間ループで更新されます。更新コードは dll 自体にあります。

exeにインポートされるコードは次のとおりです。

typedef struct{
    int iTotalQueues;
    int iCurrentQueue;
    wchar_t szQueueName[100];
}UPDATE_STATUS_DATA;

__declspec(dllimport) UPDATE_STATUS_DATA UpdateStatusData;

タイマー応答内でこのデータを読み取っていますが、更新された値を取得していません。

4

1 に答える 1