我有一个名为mydll.dll
的dll,在dll中有一个名为testFunc()
的函数。我希望testFunc()
可以在GetProcAddress()
编辑范围之外的其他范围内使用。{/ p>
例如:
的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重新获取它。
答案 0 :(得分:1)
创建一个头文件(myheader.h)。在那里声明函数变量,作为extern。在所有源文件中包含此标头。明确定义变量并将其设置为main。
<强> myheader.h 强>
typedef void(*f_testFunc)();
extern f_testFunc testFunc;
<强>的main.cpp 强>
#include "myheader.h"
f_testfunc testFunc;
int main () {
testFunc = (f_testFunc)GetProcAddress(hDll, "testFunc");
for (int i ...
<强> A.cpp 强>
#include "myheader.h"
class A {
public:
A () {
testFunc();
}
}
答案 1 :(得分:1)
我试图为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);
}
}