2017-04-01 82 views
0

我是一個C++初學者,厭倦了從DLL到EXE數據傳輸過程中遇到的錯誤。在C++中,如何發送由DLL獲取的數據到exe

問題: 我有我捆綁了一個dll ...現在的exe想啓動DLL來從Active Directory的一些DATAS。這是通過使用函數指針調用從執行一個exe exe文件到dll ..現在,DLL從AD獲取數據,並且每當它達到限制(100數據)時,它應該去exe打印這些數據(只有在EXE我需要執行這種數據打印)......並再次它應該返回到DLL並繼續獲取DATAS ,,

如何將數據從DLL轉移到exe ... ??????????

FYI:我一直在使用結構和類,這是兩個EXE和DLL ... 但清理進程崩潰我的程序內存常見的嘗試,,至於DLL和EXE堆是不同的..我給DLL裏面的數據都試圖清理exe文件...(這是一個不同的話題,這需要更多的解釋...並且爲了不浪費你的寶貴時間,請幫助我以最簡單的方式從dll傳輸數據爲exe)

我想不出後我的計劃,因爲在我的組織限制..請給我一個更好的解決這個...

回答

0

可以人在exe中找到內存塊,將地址傳遞給dll,dll可以將數據填充到內存中,然後就可以釋放exe中的緩衝區。

在您的DLL,您可以導出等的接口:

void fill_buffer(char * p_buff, int buff_size); 

在你的exe文件,你可以分配一個緩衝區,並把它傳遞給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之間傳遞結構或類,請注意字節對齊應該與它們一致。

而對於你的問題,也許你可以粘貼一些虛假的代碼,那麼你的問題就會更清楚。