[英]C++ Loading a DLL
我將要開發一個應該與DLL一起分發的API。 由於無法直接測試用DLL編寫的代碼,因此必須將DLL加載到Test-Project中並在其中運行。
我使用的是Visual Studios2015。在其中創建了一個Testproject,在其中創建了DLL的項目:
解決方案樹“ TestProject”
DLL工程
測試項目
我導出了一個虛擬函數來測試是否能夠加載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;
}
我幾乎復制了這個問題的所有內容。 不幸的是,當我運行Testproject時,控制台打印出:“無法加載DLL。4250”
在這一點上,我真的不知道該怎么辦,因為這里描述的錯誤基本上什么也沒說。 經過一點研究,我無法得到任何答案...希望您能幫助我:D
這很可能是由鏈接器設置引起的。 確保在鏈接器設置中指定“ / APPCONTAINER:NO”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.