IDE
:
DEV-C++
GCC 4.1.2
需要以下步骤:
1. 将 DLL 工程的 XX.a,XX.def,XX.dll 以及 类的头文件 拷贝到工程文件夹
2. 工程包含类的头文件
3. 在 “ 工程选项 ”- 》 “ 参数 ”- 》 “ 连接器 ” 增加 XX.a 库文件
4. 调用:与类调用相同
GCC 4.1.2
需要以下步骤:
1. 将 DLL 工程的 XX.a,XX.def,XX.dll 以及 类的头文件 拷贝到工程文件夹
2. 工程包含类的头文件
3. 在 “ 工程选项 ”- 》 “ 参数 ”- 》 “ 连接器 ” 增加 XX.a 库文件
4. 调用:与类调用相同
注:在 DLL 工程头文件需要增加宏定义
1.#ifdef _MS_WINDOWS_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
#else
#define DLLIMPORT
#endif
2.在“工程选项”-》“参数”-》“C++编译器”增加 -D_MS_WINDOWS_
3.在调用工程的“工程选项”-》“参数”-》“C++编译器”增加 -D_MS_WINDOWS_
源代码:
//DLL.H
#ifndef _DLL_H_
#define _DLL_H_
#ifdef _MS_WINDOWS_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
#else
#define DLLIMPORT
#endif
#include <string>
using namespace std;
class DLLIMPORT DllClass
{
public:
DllClass();
virtual ~DllClass(void);
string kk;
private:
};
#endif /* _DLL_H_ */
//DLL.CPP
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
DllClass::DllClass()
{
kk = "aaaaaaaaaa";
}
DllClass::~DllClass ()
{
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
/**********************************************************************/
//USEDLL.CPP
#include <cstdlib>
#include <iostream>
#include "dll.h"
using namespace std;
int main(int argc, char *argv[])
{
DllClass dc;
cout << dc.kk << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
RUN: