我有一個C++項目,它對.dll文件有更多的依賴關係。我該如何構建可執行文件,以便創建的.exe文件在給定文件夾中找到與.exe相關的.dll文件? 我正在使用Visual Studio。使用.dll文件編譯可執行文件,.dll相對於.exe文件
1
A
回答
1
您可以使用此代碼來加載DLL和調用DLL導出的函數:
#include <windows.h>
#include <iostream>
/* Define a function pointer for our imported
* function.
* This reads as "introduce the new type f_funci as the type:
* pointer to a function returning an int and
* taking no arguments.
*/
typedef int (*f_funci)();
int main()
{
HINSTANCE hGetProcIDDLL = LoadLibrary("C:\\Documents and Settings\\User\\Desktop \\fgfdg\\dgdg\\test.dll");
if (hGetProcIDDLL == NULL) {
std::cout << "could not load the dynamic library" << std::endl;
return EXIT_FAILURE;
}
# resolve function address here
f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
if (!funci) {
std::cout << "could not locate the function" << std::endl;
return EXIT_FAILURE;
}
std::cout << "funci() returned " << funci() << std::endl;
return EXIT_SUCCESS;
}
1
從一個exe相對目錄加載DLL所有你需要做的就是在格式指定路徑的"\\mydlldir\\dllnamehere.dll"
,而不是完全合格的路徑"driveletter:\\dir\\dir2\\dirwithexeinit\\mydlldir\\dllnamehere.dll"
。
第一種方法將始終在從exe文件存在位置指定的目錄中查找,其中第二個方法將始終查找指定的確切目錄。
相關問題
- 1. helink dll可執行文件
- 2. C#dll文件編譯
- 3. 反編譯文件.dll
- 4. 生產可執行文件在Linux(相對於執行編譯)
- 5. dll文件或.exe文件丟失
- 6. 如何將C文件編譯爲可執行文件(.exe)?
- 7. 在可執行文件中使用分組DLL DLL
- 8. 編譯和反編譯dll文件
- 9. 注入dll到exe文件
- 10. 在編譯好的exe文件中修改dll函數調用
- 11. 運行exe文件,包括外部dll
- 12. Maven Assembly插件破壞exe文件dll
- 13. COM interop DLL文件位於與exe文件分開
- 14. 可執行文件如何從DLL文件中查找函數?
- 15. 將類庫dll文件轉換爲可執行文件
- 16. 與DLL彈簧啓動可執行文件的可執行文件
- 17. 將IronPython WPF項目編譯爲exe文件:缺少dll
- 18. SharpDevelop - 如何嵌入,編譯EXE文件與DLL的程序集?
- 19. 如何解壓/編譯dll文件?
- 20. VB.NET文件編譯CLS到DLL
- 21. 將頭文件編譯爲DLL
- 22. 如何反編譯.dll文件?
- 23. 爲ASP反編譯DLL文件
- 24. 調試到編譯的DLL文件
- 25. 重用編譯.exe文件
- 26. .dll文件不可用
- 27. 相同二進制文件中的可執行文件和DLL /共享庫
- 28. 如何將DLL文件複製到與使用CMake的可執行文件相同的文件夾中?
- 29. 由於libgcc_s_dw2-1.dll丟失,無法運行可執行文件
- 30. 運行exe文件,除非使安裝(嵌入DLL到EXE)