导入包含函数指针的C ++ DLL

我创建了一个包含静态函数指针的类。该函数指针在程序运行时分配给另一个函数指针。

但是当我使用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,没有函数指针,一切正常。

评论