2017-04-01 11 views
0

私はC++の初心者で、dllからexeへのデータ転送中にエラーが発生しました。C++では、dllでフェッチされたデータをexeに送信する方法

問題: 私は今のexeたいが、Active Directoryからいくつかの件のデータをフェッチするDLLを開始する...私は、DLLを同梱していたしたexeファイルを持っている。これは、から関数ポインタ呼び出しを使用して行われますexeからdll .. dllはADからデータをフェッチし、Limit(100データ)に達するたびに、このデータを印刷するためにexeに移動する必要があります(exeではこのデータの印刷を実行する必要があります)。それはdllに戻り、データをフェッチし続ける必要があります。

dllからexeへのデータ転送方法... ??????????

FYI:dllファイルとexeファイルのヒープが異なっているとして、私は,,構造とexeファイルとDLL ... が、クリーンアッププロセスは、私のプログラムがクラッシュメモリの両方に共通であるクラスを使用してみました。.. DLL内に与えるデータはEXEでクリーンアップしようとしています...(これは別の話題ですが、これはもっと説明が必要です...そして、貴重な時間を無駄にしないで、dllからデータを転送する最も簡単な方法を助けてください)

をexeファイルするために、私はあなたがアルをすることができます... ..親切に私はこれをよりよい解決策を与え、私の組織であるため制限の私のプログラムを投稿

答えて

0

をcouldntのexeでメモリブロックを見つけ、dllにアドレスを渡し、dllでメモリにデータを書き込むことができます。その後、exeでバッファを解放することができます。その後、

あなたのexeファイルで
void fill_buffer(char * p_buff, int buff_size); 

、あなたがバッファを割り当て、DLLに渡すことができ、クリーンアップは::、あなたのようなインターフェースをエクスポートすることができ、あなたのDLL内の

char * the_buff = new char[1024]; 

while (...) { 
    fill_buffer(the_buff, 1024); 

    //do something to the_buff 
    print(the_buff) 
} 

delete []the_buff; 

dllとexeの間で構造体またはクラスを渡します。バイト配列が一貫しているべきであることに注意してください。

あなたの質問のために、多分あなたはいくつかの偽のコードを貼り付けることができます、そしてあなたの問題はより明確になります。

関連する問題