广东话负载功能

问题描述:

我已经作出了非常非常简单的DLL有两个文件:广东话负载功能

          dllmain.cpp 
              dll.hpp 

dllmain.cpp:

#include "dll.h" 
#include <windows.h> 

messageimport::messageimport() 
{ 

} 

messageimport::~messageimport() 
{ 

} 

void messageimport::message() 
{ 
MessageBox(0, "Hello World from DLL!\n","Hi",MB_ICONINFORMATION); 
} 

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) 
{ 
    switch(fdwReason) 
    { 
    case DLL_PROCESS_ATTACH: 
    { 
     break; 
    } 
    case DLL_PROCESS_DETACH: 
    { 
     break; 
    } 
    case DLL_THREAD_ATTACH: 
    { 
     break; 
    } 
    case DLL_THREAD_DETACH: 
    { 
     break; 
    } 
} 

/* Return TRUE on success, FALSE on failure */ 
return TRUE; 

}

dll.hpp:

#ifndef _DLL_H_ 
#define _DLL_H_ 

#if BUILDING_DLL 
#define DLLIMPORT __declspec(dllexport) 
#else 
#define DLLIMPORT __declspec(dllimport) 
#endif 

class DLLIMPORT messageimport 
{ 
public: 
    messageimport(); 
    virtual ~messageimport(); 

    void message(); 


}; 

#endif 

我从一个名为dlltes的文件使用dll t.cpp

dlltest.cpp:

#include <iostream> 
#include <windows.h> 

using namespace std; 

typedef unsigned int(WINAPI* message)(void); 

int main(int argc, char** argv) { 

HMODULE dll = LoadLibrary("Call.dll"); 
if(dll != NULL){ 

    cout << "loaded dll \n"; 

    message func = (message)GetProcAddress(dll, "message"); 

    if(func != NULL) 
    { 
     cout << "found function"; 
    }else{ 

     cout << "cant find function"; 
    } 
}else{ 

    cout << "cant load the library"; 
} 




return 0; 
} 

但是当我运行dlltest.cpp它的输出是一样

加载的DLL 找不到功能

+0

所以我需要改变'void message()'这一行''在dll.hpp中'extern“C”void message()'??? –

+0

sry如何定义BUILDING_DLL –

+0

在您的DLL的预处理器设置中。 – drescherjm

这里是很好的文章为什么你can't simple export classes

也许,你并不是真的想要出口课,所以只是汇集了消息从类和出口只是功能。我很抱歉,我没有提供任何代码,没有C++ atm。

+0

感谢brah那工作 –