一. 请参考 “VS2010开发——vc++项目编写DLL提供vb.net调用” ,但这个是供vc调用的,不同处代码以下详细说明:
1. 动态库输出接口——h文件的错误号说明:
#ifndef _WANGDUAN_H_
#define _WANGDUAN_H_
extern "C" _declspec(dllimport) void GetErrCode (unsigned long &eno1,unsigned long &eno2);
#endif
2. 动态库内部运行——h文件的错误号定义:
#ifndef _QIUGAO_H_
#define _QIUGAO_H_
class QIUGAO
{
public:
QIUGAO();
unsigned long m_Errnum1;
unsigned long m_Errnum2;
bool RetSetErrno (unsigned long e1,unsigned long e2);
void OnGetErrNumber (unsigned long & eno1,unsigned long & eno2);
#endif
3. 动态库内部运行——c文件的错误号设置:
#include "QIUGAO.h"
QIUGAO::QIUGAO()
{
m_Errnum1 = 0;
m_Errnum2 = 0;
}
bool QIUGAO::RetSetErrno(unsigned long e1,unsigned long e2)
{
m_Errnum1 = e1;
m_Errnum2 = e2;
return false;
}
void QIUGAO::OnGetErrNumber(unsigned long & eno1,unsigned long & eno2)
{
eno1 = m_Errnum1;
eno2 = m_Errnum2;
}
4. 动态库输出接口——h文件的错误号反馈:
extern "C" _declspec(dllimport)
#include "WANGDUAN.h"
QIUGAO *Plat = NULL;
void GetErrCode (unsigned long &eno1,unsigned long &eno2)
{
if (Plat != NULL)
{
Plat->OnGetErrNumber(eno1,eno2);
}
}
Plat = New QIUGAO;
5. 在程序运行错误的判断下,设置错误号添加代码: RetSetErrno(110,120);
在调用动态库的程序中,使用错误号函数来获取: GetErrCode (eno1,eno2);