使用 VS 2010 构建 ACE 和 TAO (CORBA) 时出现许多错误

Many errors happened when building ACE and TAO (CORBA) using VS 2010

我正在尝试构建 ACE 和 TAO 环境,但出现了很多错误。

我安装ACE和TAO的过程是:

  1. 将文件(ACE+TAO+CIAO-6.1.2.zip)解压到文件夹(C:\ACE_wrappers)
  2. 在 C:\ACE_wrappers\ace
  3. 中创建一个 config.h 文件
  4. 打开 config.h 文件并输入行:

#definenter code here ACE_HAS_WINNT4 1

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

#define ACE_HAS_MFC 1

#define THR_USE_AFX 1

#define ACE_USES_STATIC_MFC 1

#define ACE_AS_STATIC_LIBS 1

#define ACE_NO_INLINE

#include "ace/config-win32.h"

  1. 保存并关闭
  2. 打开控制面板->系统->高级系统设置->环境变量
  3. 新建系统变量:ACE_ROOT,值:C:\ACE_wrappers
  4. 新建系统变量:TAO_ROOT,值:C:\ACE_wrappers\TAO
  5. 在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 Server0\Tools\Binn \;c:\Program Files\Microsoft SQL Server0\DTS\Binn\;%USERPROFILE%.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C :\Program Files\Windows Kits.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;

  6. 启动Visual Stiduo 2010

  7. 在 C:\ACE_wrappers\TAO
  8. 中打开 TAO_ACE_vc10.sln 解决方案
  9. Select 在解决方案配置中发布(在菜单栏上)
  10. Select 所有项目并右击然后选择属性
  11. 设置配置属性->常规->使用MFC在共享DLL中使用MFC
  12. 在配置属性 -> VC++ 目录 -> 可执行目录中添加 C:\ACE_wrappers\bin;
  13. 在配置属性 -> VC++ 目录 -> 包含目录中添加 C:\ACE_wrappers C:\ACE_wrappers\TAO C:\ACE_wrappers\TAO\陶 C:\ACE_wrappers\TAO\orbsvcs C:\ACE_wrappers\TAO\orbsvcs\orbsvcs
  14. 在配置属性 -> VC++ 目录 -> 库目录中添加 C:\ACE_wrappers\ace C:\ACE_wrappers\TAO\陶 C:\ACE_wrappers\TAO\orbsvcs\orbsvcs

  15. Select每个项目检查其Configuration Properties -> General -> Configuration Type是否为Dynamic Library(.dll),如果是,则改为Static library(.lib) ) 但如果它是 Application(.exe) 或 Utility,那么我不更改。像 Scheduling_Service 项目在构建过程中出错。

  16. 构建 -> 构建解决方案

折腾了半天,大部分项目都搭建成功了。 Scheduling_Service、Time_Service_Clerk、NT_Notify_Service、Naming_Service(可能其他项目很少)有错误(error LNK2001: unresolved external symbol "__declspec( dllimport) public:......).

1>Scheduling_Service.obj : 错误 LNK2019: 未解析的外部符号 "__declspec(dllimport) public: __thiscall TAO_ORB_Manager::~TAO_ORB_Manager(void)" (__imp_??1TAO_ORB_Manager@@QAE@XZ) 在函数 __unwindfunclet$??0TAO_Scheduling_Service@@QAE@XZ$0 中引用 1>Scheduling_Service.obj : 错误 LNK2019: 未解析的外部符号 "__declspec(dllimport) public: __thiscall TAO_ORB_Manager::TAO_ORB_Manager(class CORBA::ORB *,class PortableServer::POA *,class PortableServer::POA经理 *)" (__imp_??0TAO_ORB_Manager@@QAE@PAVORB@CORBA@ @PAVPOA@PortableServer@@PAVPOAManager@4@@Z) 在函数中引用 "public: __thiscall TAO_Scheduling_Service::TAO_Scheduling_Service(void)" (??0TAO_Scheduling_Service@@QAE@XZ) 1>Scheduling_Service.obj:错误 LNK2019:未解析的外部符号“__declspec(dllimport) public:虚拟 __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) : error LNK2001: 未解析的外部符号 "__declspec(dllimport) public: virtual __thiscall CosNaming::Name::~姓名(无效)" (__imp_??1Name@CosNaming@@UAE@XZ) 1>Scheduling_Service.obj:错误 LNK2019:无法解析的外部符号“__declspec(dllimport) public:结构 CosNaming::NameComponent & __thiscall TAO::unbounded_value_sequence::operator[]( unsigned int)" (__imp_??A?$unbounded_value_sequence@UNameComponent@CosNaming@@@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::unbounded_value_sequence::operator[](unsigned int)" (__imp_??A?$unbounded_value_sequence@UNameComponent@CosNaming@@@TAO@@QAEAAUNameComponent@CosNaming@@I@Z)

有人知道这个问题吗?非常感谢。

您不应使用 #define ACE_AS_STATIC_LIBS 1,除非您使用的是为静态使用而生成的 Visual Studio 项目。目前您想要进行静态构建,您必须使用 MPC

重新生成 Visual Studio 项目