我创建了一个包含静态函数指针的类。该函数指针在程序运行时分配给另一个函数指针。
但是当我使用LoadLibrary加载我的DLL并检查它时,它返回false。 所有项目均使用Visual Studio 2015编译。
这是我的DLL制作项目:
// DLL制作项目的头文件
#pragma once
//#define IMPORT_DLL //import disabled, exporting
#ifdef IMPORT_DLL
#define DLL_IMPORT_EXPORT __declspec(dllimport)
#else
#define DLL_IMPORT_EXPORT __declspec(dllexport)
#endif
class MyClass
{
public:
DLL_IMPORT_EXPORT MyClass();
DLL_IMPORT_EXPORT ~MyClass();
....
//my static function pointer
DLL_IMPORT_EXPORT static bool(*ClassTransmit)(uint8_t* TX_buffer, size_t TX_size, size_t Port);
}
// DLL制作项目的源文件
#include "MyClass.h"
bool(*MyClass::ClassTransmit)(uint8_t* TX_buffer, size_t TX_size, size_t Port) = nullptr;
MyClass::MyClass()
{
...
}
MyClass::~MyClass()
{
...
}
//使用此DLL的主文件
int main()
{
HINSTANCE hinstLib;
hinstLib = LoadLibrary(TEXT("MyClass.dll"));
// If the handle is valid...
if (hinstLib != NULL)
return false;
MyClass::Class_Transmit = My_function;
}
当我检查句柄验证时,它始终返回false,没有函数指针,一切正常。