写一个c++调用dll动态库使用类的调用的例子
时间: 2024-10-24 22:03:43 浏览: 34
在C++中,要调用DLL(动态链接库)中的类,首先你需要确保DLL已经包含对应的头文件,并导出相应的函数和类。下面是一个简单的例子,假设你有一个名为`MyClass`的类在DLL中,名为`myDll.dll`:
```cpp
// dll_example.cpp (主程序)
#include <windows.h> // 引入Windows API
#pragma comment(lib, "myDll.lib") // 引入DLL的库文件
// 定义指向DLL中MyClass类型的指针
typedef MyClass* (*CreateMyClassFunc)();
int main() {
// 动态加载DLL
HMODULE hModule = LoadLibrary("myDll.dll"); // 如果找不到则返回NULL
if (!hModule) {
std::cerr << "Failed to load DLL!" << std::endl;
return -1;
}
// 获取类的创建函数地址
CreateMyClassFunc createFunc = reinterpret_cast<CreateMyClassFunc>(GetProcAddress(hModule, "CreateMyClass"));
if (!createFunc) {
std::cerr << "Failed to get function address!" << std::endl;
FreeLibrary(hModule); // 清理资源
return -1;
}
// 创建MyClass的对象实例
MyClass* obj = createFunc(); // 调用DLL中的CreateMyClass函数
// 现在可以像使用普通类一样使用obj
obj->doSomething();
// 清理资源
delete obj;
FreeLibrary(hModule);
return 0;
}
```
在这个例子中,`CreateMyClass`是DLL中导出的一个函数,它返回一个`MyClass`类型的指针。注意,实际的类名、函数名以及导入函数的方式需要替换为你自己的实际情况。
阅读全文