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;
}

posted @ 2019-12-05 10:42  久龄  阅读(47)  评论(0编辑  收藏  举报