C++ 跨文件调用函数
.h文件
#pragma once
#include "Opera.h"
#ifdef CONTRACTDRAWING_MODULE
#define CONTRACTDRAWING_API extern "C" __declspec(dllexport)
#else
#define CONTRACTDRAWING_API extern "C" __declspec(dllimport)
#endif
class COperaSetting :
public COpera
{
public:
COperaSetting();
~COperaSetting();
virtual void Start();
static AcString ms_sAxisLayer;
};
CONTRACTDRAWING_API AcString GetSettingAxisLayer();
注意:CONTRACTDRAWING为模块、项目名
.cpp文件
AcString COperaSetting::ms_sAxisLayer;
CONTRACTDRAWING_API AcString GetSettingAxisLayer()
{
return COperaSetting::ms_sAxisLayer;
}
其他.cpp文件调用函数
typedef AcString (*FN_GetSettingAxisLayer)();
char szModuleName[MAX_PATH];
sprintf(szModuleName, "加载原函数的文件%d.arx", ACADV_RELMAJOR);
FN_GetSettingAxisLayer GetSettingAxisLayer = ModulesManager::Instance().func<FN_GetSettingAxisLayer>(szModuleName, "GetSettingAxisLayer");
if (!GetSettingAxisLayer)
{
acutPrintf(_T("\n加载加载原函数的文件%d.arx失败."), ACADV_RELMAJOR);
return;
}
AcString sLayerName = GetSettingAxisLayer();
if (sLayerName.compare(_T("")) == 0)
{
return;
}