找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4705|回复: 2

ACE 在UNICODE 版本引用时有问题, 请帮忙

[复制链接]
发表于 2012-11-24 15:28:56 | 显示全部楼层 |阅读模式
出现 "无法解析的外部符号" 这样的错误, 不知道是什么情况导致, 查了很多资料未能找到, 只能发帖求助了.

我的环境是  WIN7 + VS2010 + ACE6.1.6

1. config.h 内容如下:
#ifdef _UNICODE
#define ACE_HAS_WCHAR
#endif//_UNICODE

#define ACE_HAS_MFC 1
#include "ace/config-win32.h"

2. ACE 项目配置 为 "使用 Unicode 字符集"

3. 环境变量为  
ACE_ROOT = D:\ACE_wrappers
PATH = %ACE_ROOT%\lib


4. 测试工程为 ACE包中的自带例子 "Log_Msg_Test_Callback"
    1)项目配置 "字符集" 改为: "使用 Unicode 字符集"
    2)在test_callback.cpp中添加一行宏定义如下:
#define ACE_USES_WCHAR

#include "ace/OS_main.h"
#include "ace/Log_Msg.h"


编译生成 ACE时成功, 编译Log_Msg_Test_Callback时, 出现"无法解析的外部符号"错误;
错误信息如下:

1>------ 已启动生成: 项目: Log_Msg_Test_Callback, 配置: Debug Win32 ------
1>  test_callback.cpp
1>  
1>  正在搜索库
1>      正在搜索 ..\..\lib\ACEd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\iphlpapi.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100ud.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100ud.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcrtd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\msimg32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comctl32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shlwapi.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\windowscodecs.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\atlsd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ws2_32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\mswsock.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\netapi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprtd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\wininet.lib:
1>      正在搜索 ..\..\lib\ACEd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\iphlpapi.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100ud.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100ud.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcrtd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\msimg32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comctl32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shlwapi.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\windowscodecs.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\atlsd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ws2_32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\mswsock.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\netapi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprtd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\wininet.lib:
1>      正在搜索 ..\..\lib\ACEd.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\iphlpapi.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
1>      正在搜索 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
1>  
1>  已完成库搜索
1>test_callback.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: int __thiscall ACE_Log_Record::format_msg(wchar_t const * const,unsigned long,wchar_t *)" (
__imp_?format_msg@ACE_Log_Record@@QAEHQB_WKPA_W@Z),该符号在函数 "public: virtual void __thiscall Logger::log(class ACE_Log_Record &)" (?log@Logger@@UAEXAAVACE_Log_Record@@@Z) 中被引用
1>test_callback.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: wchar_t const * __thiscall ACE_Log_Msg::local_host(void)const " (
__imp_?local_host@ACE_Log_Msg@@QBEPB_WXZ),该符号在函数 "public: virtual void __thiscall Logger::log(class ACE_Log_Record &)" (?log@Logger@@UAEXAAVACE_Log_Record@@@Z) 中被引用
1>test_callback.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: wchar_t const * __thiscall ACE_Log_Record::msg_data(void)const " (
__imp_?msg_data@ACE_Log_Record@@QBEPB_WXZ),该符号在函数 "public: virtual void __thiscall Logger::log(class ACE_Log_Record &)" (?log@Logger@@UAEXAAVACE_Log_Record@@@Z) 中被引用
1>test_callback.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) int __cdecl ace_os_wmain_i(class ACE_Main_Base &,int,wchar_t * * const)" (
__imp_?ace_os_wmain_i@@YAHAAVACE_Main_Base@@HQAPA_W@Z),该符号在函数 _wmain 中被引用
1>.\test_callback.exe : fatal error LNK1120: 4 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========


 楼主| 发表于 2012-11-24 22:44:34 | 显示全部楼层
问题已经解决, 在网上查找了那么多, 没有关于这个问题的答案, 看来要么是使用MBCS的人比较多, 要么就是这个问题被我撞见了。
核心就是: ACE 有三种模式, 一 不支持UNICODE, 二 标准模式, 三 完全支持模式
在此感谢我的好友碧哥的顶力支持。
发表于 2012-11-25 20:21:44 | 显示全部楼层
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-2 21:32 , Processed in 0.015963 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表