1. 程式人生 > >vs 中項目與 dll 一起調試和參數傳遞

vs 中項目與 dll 一起調試和參數傳遞

dll

1.打開 vs 創建項目
技術分享圖片
2.添加項目
技術分享圖片
技術分享圖片
技術分享圖片
3.配置 dll(exe的路徑)
技術分享圖片
4.調試的時候倆個都最好生成一下 不然報錯

項目與 dll 之間的參數傳遞(結構體 函數指針等)

如DEBUG_EVENT 結構體 map<string, pVoidFun> (pVoidFun為函數指針)
先導出一個函數
技術分享圖片
實現 這裏要註意的是打印結構體時註意溢出問題

 //printf("%08x  %08x  %08x %08x  \n", hPorc, hThread, m_DebugEvent, Funmap);    //產生溢出 後面打印的是結構體的數據 因為後面覆蓋了
    printf("%08x  %08x  %08x %08x  \n", hPorc, hThread, &m_DebugEvent, Funmap);

技術分享圖片
5.調用 (這裏用了點技巧參數為調用一個函數 函數返回值為 map)

 map<string, pVoidFun> Funmap;
 DWORD CCyichang::GetFunmapAddr()
{
    return (DWORD)&Funmap;
}
 myfun(myCCyichang->hProc, myCCyichang->hThread, myCCyichang->m_DebugEvent, (DWORD)(myCCyichang->GetFunmapAddr()));   //地址與類型(DWORD,map<string, pVoidFun>**)無關32 位push4個字節  64 位push 倆遍 也就是 8 個字節  類型只是用來方便使用想怎麽寫就怎麽寫

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
6.註意一個溢出問題
技術分享圖片
7.最後註意的是不要懶 dll一般寫也main 函數 不寫可能會報錯
技術分享圖片

vs 中項目與 dll 一起調試和參數傳遞