C ++加载DLL

时间:2017-04-20 09:04:07

标签: c++ dll loadlibrary

我即将开发一个应该与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

1 个答案:

答案 0 :(得分:-1)

这可能是由链接器设置引起的。确保在链接器设置中指定“/ APPCONTAINER:NO”。