vs 中項目與 dll 一起調試和參數傳遞
阿新 • • 發佈:2018-05-12
dll1.打開 vs 創建項目
2.添加項目
3.配置 dll(exe的路徑)
4.調試的時候倆個都最好生成一下 不然報錯
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 一起調試和參數傳遞