我即将开发一个应该与DLL一起分发的API。因为我不能直接测试我在DLL中编写的代码,所以我必须在Test-Project中加载DLL并在那里运行。
我正在使用Visual Studios 2015.在那里,我制作了一个Testproject,并在其中,我制作了我的DLL项目:
Solution-Tree" 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时,我的控制台打印出来:&#34;无法加载DLL。 4250&#34;
此时我真的不知道该怎么做,因为所描述的错误here基本上什么也没说。通过一些研究,我无法得到任何答案......希望你能帮助我:D
答案 0 :(得分:-1)
这可能是由链接器设置引起的。确保在链接器设置中指定“/ APPCONTAINER:NO”。