广东话负载功能
问题描述:
我已经作出了非常非常简单的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 找不到功能
答
这里是很好的文章为什么你can't simple export classes
也许,你并不是真的想要出口课,所以只是汇集了消息从类和出口只是功能。我很抱歉,我没有提供任何代码,没有C++ atm。
+0
感谢brah那工作 –
所以我需要改变'void message()'这一行''在dll.hpp中'extern“C”void message()'??? –
sry如何定义BUILDING_DLL –
在您的DLL的预处理器设置中。 – drescherjm