example
// example.cpp - 动态链接库的源代码
#include <Windows.h>
extern "C" __declspec(dllexport) const char* GetString() {
static const char* str = "Hello, World!";
return str;
}
main
// main.cpp - 调用动态链接库函数的主程序
#include <iostream>
#include <Windows.h>
typedef const char* (*GetStringFunc)(); // 定义函数指针类型
int main() {
HINSTANCE hinst = LoadLibraryA("example.dll"); // 加载DLL
if (hinst) {
GetStringFunc getString = (GetStringFunc)GetProcAddress(hinst, "GetString"); // 获取函数指针
if (getString) {
const char* str = getString(); // 调用函数
std::cout << str << std::endl; // 输出字符串
} else {
std::cerr << "GetProcAddress failed." << std::endl;
}
FreeLibrary(hinst); // 释放DLL
} else {
std::cerr << "LoadLibrary failed." << std::endl;
}
return 0;
}
在这个例子中,我们首先使用LoadLibrary加载DLL文件,然后使用GetProcAddress获取函数指针。一旦我们有了函数指针,我们就可以像调用本地函数一样调用它,并将返回的字符串赋值给一个变量。最后,在不再需要DLL时,我们使用FreeLibrary释放DLL。
请注意,这里的example.dll必须位于程序的工作目录下,或者在系统的路径中,或者在Windows系统的路径环境变量中,或者在程序运行目录下。否则LoadLibrary将失败。