我试图构建ACE和TAO环境,但遇到了很多错误。
我安装ACE和TAO的过程是:
- 将文件(ACE+TAO+CIAO-6.1.2.zip)解压缩到文件夹(C:\ACE_wrappers)中
- 在C:\ACE_wrappers\ACE中创建一个config.h文件
- 打开config.h文件并键入行:
#defineter code heree ACE_HAS_WINNT4 1
#定义ACE_HAS_STANDARD_PP_LIBRARY 1
#定义ACE_HAS_MFC 1
#定义THR_USE_AFX 1
#定义ACE_USES_STATIC_MFC 1
#定义ACE_AS_STATIC_LIOS 1
#定义ACE_NO_INLINE
#包括"ace/config-win32.h">
- 保存并关闭
- 打开"控制面板"->"系统"->"高级系统设置"->"环境变量">
- 创建一个新的系统变量:ACE_ROOT,值:C:\ACE_wrappers
- 创建一个新的系统变量:TAO_ROOT,值:C:\ACE_wrappers\TAO
-
在PATH系统变量中,添加值:C:\Program Files\Microsoft Visual Studio 10.0\VC\bin;C: \ACE_wrappers\bin;C: \ACE_wrappers\lib;C: \ACE_wrappers\TAO\bin;因此该值为:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell \v1.0\;c: \Program Files\Microsoft SQL Server\100\Tools\Binn\;c: \Program Files\Microsoft SQL Server\100\DTS\Binn\;%USERPROFILE%.dnx\bin;C: \Program Files\Microsoft DNX\Dnvm\;C: \Program Files\Windows工具包\8.1\Windows性能工具包\;C: \Program Files\Microsoft Visual Studio 10.0\VC\bin;C: \ACE_wrappers\bin;C: \ACE_wrappers\lib;C: \ACE_wrappers\TAO\bin;
-
启动Visual Stiduo 2010
- 在C:\ACE_wrappers\TAO中打开TAO_ACE_vc10.sln解决方案
- 在解决方案配置中选择Release(发布)(在菜单栏上)
- 选择所有项目,右键单击,然后选择"属性">
- 设置配置属性->常规->使用MFC在共享DLL中使用MFC
- 在配置属性->VC++目录->可执行目录中添加C:\ACE_wrappers\bin
- 在"配置属性"->"VC++目录"->"包含目录"中,添加C:\ACE_wrappersC: \ACE_说唱歌手\TAOC: \ACE_说唱歌手\TAO\TAOC: \ACE_wrappers\TAO\orbsvcsC: \ACE_wrappers\TAO\orbsvcs\orbsvcs
-
在"配置属性"->"VC++目录"->"库目录"中添加C: \ACE _说唱歌手\ACEC: \ACE_说唱歌手\TAO\TAOC: \ACE_wrappers\TAO\orbsvcs\orbsvcs
-
选择每个项目,检查其配置属性->常规->配置类型是否为动态库(.dll),如果是,则更改为静态库(.lib)但如果它是应用程序(.exe)或实用程序,那么我不会更改。类似于Scheduling_Service项目,该项目在生成过程中出现错误。
- 构建->构建解决方案
经过很长时间,大多数项目都成功构建。Scheduleling_Service、Time_Service_Clerk、NT_Notify_Service、Naming_Service(可能还有一些其他项目)存在错误(错误LNK2001:未解析的外部符号"__declspec(dllimport)public:……")。
1> Scheduleling_Service.obj:错误LNK2019:未解析的外部符号"__declspec(dllimport)public:__thiscall TAO_ORB_Manager::~TAO_ORB_Manager(void)"(__imp_??1TAO_ORB_Manager@@QAE@XZ)在函数__undfunclet$??中引用??0TAO_Scheduleling_Service@@QAE@XZ0美元1> Scheduleling_Service.obj:错误LNK2019:未解析的外部符号"__declspec(dllimport)public:__thiscall TAO_ORB_Manager::TAO_ORB_Manager(类CORBA::ORB*,类PortableServer::POA*,类PortableServer::POAManager*)"(__imp_??0TAO_ORB_Manager@@QAE@PAVORB@CORBA@@PAVPOA@PortableServer@@PAVPOAManager@4@@Z) 在函数"public:__thiscall TAO_Scheduling_Service::TAO_Scheuling_Service(void)"中引用(??0TAO_Scheduleling_Service@@QAE@XZ)1> Scheduleling_Service.obj:错误LNK2019:未解析的外部符号"__declspec(dllimport)public:virtual __thiscall CosNaming::Name::~ Name(void)"(__imp_??1Name@CosNaming@@UAE@XZ)在函数"public:int__thiscall TAO_Scheduling_Service::init(int,char**const)"中引用(?init@TAO_Scheduling_Service@@QAEHHQAPAD@Z)1> TAO_RTSchedd.lib(Scheduler_Factory.obj):错误LNK2001:未解析的外部符号"__declspec(dllimport)public:virtual__thiscall CosNaming::Name::~Name(void)"(__imp_??1Name@CosNaming@@UAE@XZ)1> Scheduleling_Service.obj:错误LNK2019:未解析的外部符号"__declspec(dllimport)public:struct CosNaming::NameComponent&__thiscall TAO::unboundd_value_sequence::operator[](unsigned int)"(__imp_??A$unbounded_value_sequence@UNameComponent@宇宙命名@@@TAO@@QAEAAUNameComponent@CosNaming@@I@Z)在函数"public:int__thiscall TAO_Scheduling_Service::init(int,char**const)"(?init@TAO_Scheduling_Service@@QAEHHQAPAD@Z)1> TAO_RTSchedd.lib(Scheduler_Factory.obj):错误LNK2001:未解析的外部符号"__declspec(dllimport)public:struct CosNaming::NameComponent&__thiscall TAO::unboundd_value_sequence::operator[](unsigned int)"(__imp_??A$unbounded_value_sequence@UNameComponent@宇宙命名@@@TAO@@QAEAAUNameComponent@CosNaming@@I)
有人知道这个问题吗?非常感谢。
除非您使用的是为静态使用而生成的Visual Studio项目,否则不应该使用#define ACE_AS_STATIC_LIBS 1
。当你想进行静态构建时,你必须使用MPC 重新生成Visual Studio项目