gpt4 book ai didi

C++ - 如何使显式导入的 DLL 函数对其他类可用

转载 作者:行者123 更新时间:2023-11-30 04:00:12 25 4
gpt4 key购买 nike

我有一个名为 mydll.dll 的 dll,在 dll 中有一个名为 testFunc() 的函数。我希望在 GetProcAddress() 所在的范围之外的其他范围内使用 testFunc()

例如:

main.cpp

#include <Windows.h>
typedef void(*f_testFunc)();
int main(){
// load dll into hDll
f_testFunc testFunc = (f_testFunc)GetProcAddress(hDll, "testFunc");

for (int i = 0; i < NUM; i++){
A a = A();
}
}

A.cpp

class A{
public:
A(){
testFunc();
}
}

我只是想要一种在我的代码中的任何地方使用 testFunc() 的方法,而不必从 dll 中重新获取它。

最佳答案

我已尝试为 mentioned 制作样本DLL包装类

 typedef void(*f_testFunc)();

class DllWrapper {

DllWrapper(HDLL hDll) {
testFunc_ = (f_testFunc)GetProcAddress(hDll, "testFunc");
}
void testFunc() {
(*testFunc_)();
}

private:
f_testFunc testFunc_;
};

 class A {
public:
A(DllWrapper& dll) dll_(dll) {
dll_.testFunc();
}

private:
DllWrapper& dll_;
};

int main(){
// load dll into hDll
DllWrapper dll(hDll);

for (int i = 0; i < NUM; i++){
A a = A(dll);
}
}

关于C++ - 如何使显式导入的 DLL 函数对其他类可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com