C++动态调用dll中的函数

vs中创建一个dll项目,头文件中写上如下代码:

extern "C" __declspec(dllexport) int Add(int a, int b);

cpp文件中:

int Add(int a, int b)
{
	return a + b;
}

主程序中main.cpp中:

#pragma once
#include 
#include 
typedef int (*Add_Func)(int a, int b);
int main()
{
    HMODULE hDll = LoadLibraryEx(L"Dll2.dll", 0, LOAD_WITH_ALTERED_SEARCH_PATH);
    std::string funcName = "Add";
    Add_Func add = (Add_Func)GetProcAddress(hDll, funcName.c_str());
    if (add = NULL)
    {
        FreeLibrary(hDll);
        return false;
    }
    int ret = add(3, 4);
    std::cout << "Hello World!\n";
}

注意:
1.dll中的函数声明必须写上extern “C” __declspec(dllexport),不然找不到该函数
2.dll文件和exe放在同一文件夹下
3.LOAD_WITH_ALTERED_SEARCH_PATH 表示搜索同目录中依赖的其他dll

你可能感兴趣的:(C++,c++)