我即將開發一個應該與DLL分發的API。因爲我無法直接測試我寫在DLL中的代碼,所以我必須在測試項目中加載DLL並在那裏運行它。C++加載DLL
我使用視覺工作室2015年在那裏,我做了一個Testproject和範圍內的,我做我的DLL項目:
解決方案樹 「TestProject」
DLLProject
TestProject
我導出虛擬函數來測試,如果我我能夠加載DLL:
#ifndef EXPORT
#define EXPORT __declspec(dllexport)
#endif
extern "C" {
EXPORT int dummy() {
return 5;
}
}
然後,在我的Testproject,我嘗試加載DLL,提取功能,並運行它:
#include <windows.h>
#include <iostream>
using namespace std;
typedef int (__stdcall *dll_func)();
int main() {
HINSTANCE hGetProcIDDLL = LoadLibrary(TEXT("H:\\path\\to\\project\\Debug\\DLLProject\\DLLProject.dll"));
if (hGetProcIDDLL == NULL) {
cout << "DLL could not be loaded. " << GetLastError() << endl;
return;
}
dll_func f = (dll_func)GetProcAddress(hGetProcIDDLL, "create");
if (f == NULL) {
cout << "Factory function could not be resolved. " << GetLastError() << endl;
return;
}
cout << "Factory function returns: " << f() << endl;
}
我複製幾乎一切從this question。 不幸的是,當我跑我Testproject,我的控制檯打印出:「DLL不能加載4250」。
在這一點上我真的不知道該怎麼辦,因爲所描述here錯誤basicly什麼都不說。通過一些研究,我無法得到任何答案...希望你能幫助我:D
抓住[procmon](https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx),將篩選器設置爲您的測試exe並查看哪些文件操作失敗。 – GSerg
也許我必須補充說testproject是一個「Visual C++/CLR/CLR-Consoleprogramm」項目,而DLLProject是一個「Visual C++/Windows/DLL(通用Windows)」 - 項目:D – Rockettomatoo
@GSerg你所有的進程監視器給我,是一個「創建過程」。從我的DLL – Rockettomatoo