繁体   English   中英

C ++加载DLL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM