dll导出类(仅能静态加载,不能动态加载?)
一,编程DLL(建win32DLL空工程)
a.编写。h文件
#ifdef _CLASSINDLL //使其能够有动态链接库程序自身来使用
#define CLASSINDLL_CLASS_DECL __declspec(dllexport)
#else
#define CLASSINDLL_CLASS_DECL __declspec(dllimport)
#endif
#include <iostream>
#include <string>
using namespace std;
#define LINE_SIZE 50
class CLASSINDLL_CLASS_DECL MyReadIni
{
FILE *pfile;
public:
int myReadString(char *szKeyWord, string &strResult, char *pFilePath=".\\config.ini");
int myReadInt(char *szKeyWord, int &nResult, char *pFilePath=".\\config.ini");
};
b.编写实现文件。cpp
#define _CLASSINDLL
#include "INIDLL.h"
int MyReadIni::myReadString(char *szKeyWord, string &strResult, char *pFilePath)
{
}
int MyReadIni::myReadInt(char *szKeyWord, int &nResult, char *pFilePath)
{
}
二,编程测试DLL(建win32空工程)
1.将dll工程中的dll文件和lib文件拷贝到测试工程目录下
a.编写。h文件
#ifdef _CLASSINDLL
#define CLASSINDLL_CLASS_DECL __declspec(dllexport)
#else
#define CLASSINDLL_CLASS_DECL __declspec(dllimport)
#endif
#include <iostream>
#include <string>
using namespace std;
#define LINE_SIZE 50
class CLASSINDLL_CLASS_DECL MyReadIni
{
FILE *pfile;
public:
int myReadString(char *szKeyWord, string &strResult, char *pFilePath=".\\config.ini");
int myReadInt(char *szKeyWord, int &nResult, char *pFilePath=".\\config.ini");
};
b。编写。cpp文件
#include "test.h"
#pragma comment(lib, "INIDLL.lib") //将lib包含进工程,也可在工程-属性-连接器-输入-附加依赖项里添加INIDLL.lib
int main()
{
MyReadIni tt;
int port;
tt.myReadInt("port",port);
cout<<port<<endl;
string username;
tt.myReadString("username", username);
cout<<username<<endl;
system("pause");
return 0;
}