ACE_STUDY ACE应用程序链接错误 error LNK2019 的解决办法

ACE应用程序链接错误      error LNK2019 的解决办法 
注意:是Stone Jiang写的,我找到的文章。感谢他的文章!

读者水平:初级 http://blog.csdn.net/FocusOnACE/archive/2006/07/09/896332.aspx
摘要:文本简要指出如何正确编译和链接ACE应用程序。

对于新手来说,ACE开发环境,会是一团谜团,如何正确配置开发者机器,快速体验ACE,
就是本系列文章的目的。本文仅解决如何解决LNK2019错误

环境:
  

        ACE版本 5.5.1
         操作系统 Windows xp professional sp2
         开发环境 Microsoft Visual C++ 2005       77626-009-0000007-41235

下面的代码是服务的主程序

// @file: RegisterServer.cpp :
// @description: Defines the entry point for the GameService Daemon application.
// @date: 2006-07-06
// @author: Jiangtao<2005119@gmail.com>
#ifdef _DEBUG
#define        ACE_NDEBUG 0
#define        ACE_NTRACE 0
#endif
#include      " stdafx.h "
#include      " ACE/Filecache.h "
#include      " ACE/Log_Msg.h "
#include      " ACE/OS_NS_signal.h "
#include      " ACE/Service_Config.h "

#ifdef ACE_HAS_SIG_C_FUNC
#pragma message ( " ACE_HAS_SIG_C_FUNC " )
extern       " C "
{
#endif      /* ACE_HAS_SIG_C_FUNC */

      //      call exit() so that static destructors get called
      static       void
      handler ( int )
{
      delete (ACE_Filecache      * ) ACE_Filecache::instance ();
      ACE_OS::exit ( 0 );
}

#ifdef ACE_HAS_SIG_C_FUNC
}
#endif      /* ACE_HAS_SIG_C_FUNC */

int      ACE_TMAIN( int      argc, ACE_TCHAR *      argv[])
{
ACE_DEBUG((LM_INFO,ACE_TEXT( " 启动服务\n " )));
ACE_Service_Config daemon;

ACE_OS::signal (SIGCHLD, SIG_IGN);

      //      SigAction not needed since the handler will shutdown the server.
ACE_OS::signal (SIGINT, (ACE_SignalHandler) handler);
ACE_OS::signal (SIGUSR2, (ACE_SignalHandler) handler);

      if      (daemon.open (argc, argv, ACE_DEFAULT_LOGGER_KEY,      0 )      !=       0 )
      ACE_ERROR_RETURN ((LM_ERROR,      " %p\n " ,      " open " ),      1 );

      //      The configured service creates threads, and the
      //      server won't exit until the threads die.

      //      Run forever, performing the configured services until we receive
      //      a SIGINT.

      return       0 ;
}

服务加载的配置文件

###############################################################################
# file svc.conf
###############################################################################

dynamic GameService Service_Object      *      GameService: _make_GameServer_T() active

出错提示:

----- Build started: Project: RegisterServer, Configuration: Debug Win32 ------
Compiling
RegisterServer.cpp
Linking
RegisterServer.obj : error LNK2019: unresolved external symbol "__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) referenced in function _wmain
RegisterServer.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static int __cdecl ACE_Service_Config::open(int,wchar_t * * const,wchar_t const *,int,int,int)" (__imp_?open@ACE_Service_Config@@SAHHQAPA_WPB_WHHH@Z) referenced in function "int __cdecl ace_wmain_i(int,wchar_t * * const)" (?ace_wmain_i@@YAHHQAPA_W@Z)
D:\ACE_OUTPUT\Game\\RegisterServerd.exe : fatal error LNK1120: 2 unresolved externals
Build log was saved at "file://d:\My Sources\RegisterService\RegisterServer\Debug\BuildLog.htm"
RegisterServer - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ========== 
问题分析
出错信息显示,不能解析函数ace_os_wmain_i()以及      ACE_Service_Config::open()。
从这里可以看出,链接器需要UNICODE版本的ace库,而我们在生成ACE的时候,并没有生成宽字符
的UNICODE版本。

解决办法:
打开项目的属性页,找到配置属性,在字符集中,选择多字节字符集。再重新编译,问题解决。

时间: 2024-11-20 23:02:25

ACE_STUDY ACE应用程序链接错误 error LNK2019 的解决办法的相关文章

lnk1120-vs2010运行程序报错:error LNK2019: 无法解析的外部符号

问题描述 vs2010运行程序报错:error LNK2019: 无法解析的外部符号 如题,我在vs2010环境下做C++练习题时出现该错误.程序代码如下: //array.h#ifndef ARRAY_H#define ARRAY_Htemplate<typename T>class Array{public: Array(int n);//数组首地址不用指定,待会分配 Array(Array &a); ~Array(); T getAt(int i);//返回第i个数组元素 voi

const-C++ 错误 error LNK2019: 无法解析的外部符号

问题描述 C++ 错误 error LNK2019: 无法解析的外部符号 我觉得我的错误是在构造函数里面,可是我不知道该怎么去改. template <class T>//类carclass Car{ int Car_Number; int Start_Time; int Out_Time;public: Car(const T&item = 0); ~Car(); bool Get_Car_Number(T&item){ item = Car_Number; return t

logcat-android程序运行错误,不知道怎么解决。

问题描述 android程序运行错误,不知道怎么解决. 我的安卓程序突然运行终止,logCat错误信息如下: 05-26 10:49:54.540: E/AndroidRuntime(30584): java.lang.OutOfMemoryError 05-26 10:49:54.540: E/AndroidRuntime(30584): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 05-26 10:4

在ASP中常见的错误80004005信息和解决办法

作者:BatMan错误信息(错误信息我不用翻译成中文了吧,呵呵,大家谅解)Microsoft OLE DB Provider for ODBC Drivers error '80004005'[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet databaseengine cannot open the file '(unknown)'. It is already opened exclusivelyby another

win7安装错误常见提示及解决办法

  1.错误提示:Please wait- 意思:请稍候- 解决办法:如果我们在安装win7的时候一直保留在这个页面,卡在这个地方的话,请检查硬件是否正常,如果正常请检查MD5是否一致.如果配置低,可能要多等一下,请耐心等待.在PE2.0以下在这一步会提示无法安装,原因是PE版本太低.请使用高于或等于2.0版的PE,论坛有提供 2.错误提示:Setup is copying temporary files- 意思:程序正在复制临时文件- 解决办法:同1 3.错误提示:Setup is start

Nginx 502错误触发条件与解决办法汇总

Nginx 502错误触发条件与解决办法汇总 一些运行在Nginx上的网站有时候会出现"502 Bad Gateway"错误,有些时候甚至频繁的出现.有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区. 以下是从张宴和Ayou的博客搜集整理的一些Nginx 502错误的排查方法,供大家参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的.这些错误一般都不是nginx本身的问题,一定要从后端找

无法定位程序输入点 msvcr100.dll的解决办法

无法定位程序输入点 msvcr100.dll的原因:用户在安装运行游戏模拟器时,由于缺少程序语言编译环境(VC2010运行库),造成游戏模拟器或其他软件无法进行程序 编译调试,系统将提示"出现无法定位程序输入点×××于动态链接库msvcr100.dll上"或提示"没有找到msvcr100.dll,因此这个程序 未能启动...": 无法定位程序输入点 msvcr100.dll的解决办法: 下载安装Microsoft Visual C++ 2010(VC2010运行库)

dubbo filter 使用-调用Dubbo服务报以下错误,原因和解决办法

问题描述 调用Dubbo服务报以下错误,原因和解决办法 用mvn 创建了一个子项目jar dubbo filter,在生产者中无法调用,报 No such extension xxx for filter/com.alibaba.dubbo.rpc.Filter

微信小程序 wx.uploadFile无法上传解决办法_JavaScript

微信小程序 wx.uploadFile无法上传解决办法 微信安卓客户端无法使用wx.uploadFile上传文件的问题有不少开发者都遇到. 我也因为一直不能解决,硬着头皮提交审核最后被拒(抱着审核者最好用iOS检测的心态,不巧审核我应用的用的是安卓),才尝试使用第三方的手段解决. 最终我是用了七牛第三方存储的方式,将文件直接上传至七牛的储存的空间上再回调使用. 当然像又拍云,万象优图这些第三方存储源都可以采用这种思路. 首先是将七牛的https上传域名放进小程序的域名名单中. 这里我使用的是七牛