簡體   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