当前位置:  技术问答>linux和unix

急:error LNK2001: unresolved external symbol _rindex

    来源: 互联网  发布时间:2016-03-20

    本文导语:  我将一些C程序从linux移植到windows,windows下缺少头文件strings.h,我就将Linux底下的该文件及相关文件拷贝过来,在使用visual studio 2005编译的时候出现类似这样的错误: error LNK2001: unresolved external symbol _rindex 还有 ...

我将一些C程序从linux移植到windows,windows下缺少头文件strings.h,我就将Linux底下的该文件及相关文件拷贝过来,在使用visual studio 2005编译的时候出现类似这样的错误:

error LNK2001: unresolved external symbol _rindex

还有
 Warning 12 warning C4996: 'sprintf' was declared deprecated e:usersddzhanggrapeswindowstoolstoolssrcgen_args.c 46
 Warning 13 warning C4996: 'fopen' was declared deprecated e:usersddzhanggrapeswindowstoolstoolssrcgen_args.c 48
 Warning 14 warning C4996: 'strcpy' was declared deprecated e:usersddzhanggrapeswindowstoolstoolssrcgen_args.c 51

会是什么原因呢?

strings.h的文件内容为:
/* Copyright (C) 1991,92,96,97,99,2000,2001 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#ifndef _STRINGS_H
#define _STRINGS_H 1

/* We don't need and should not read this file if  was already
   read. The one exception being that if __USE_BSD isn't defined, then
   these aren't defined in string.h, so we need to define them here.  */
#if !defined _STRING_H || !defined __USE_BSD

# include 
# define __need_size_t
# include 

__BEGIN_DECLS

/* Compare N bytes of S1 and S2 (same as memcmp).  */
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     __THROW __attribute_pure__;

/* Copy N bytes of SRC to DEST (like memmove, but args reversed).  */
extern void bcopy (__const void *__src, void *__dest, size_t __n) __THROW;

/* Set N bytes of S to 0.  */
extern void bzero (void *__s, size_t __n) __THROW;

/* Return the position of the first bit set in I, or 0 if none are set.
   The least-significant bit is position 1, the most-significant 32.  */
extern int ffs (int __i) __THROW __attribute__ ((const));

/* Find the first occurrence of C in S (same as strchr).  */
extern char *index (__const char *__s, int __c) __THROW __attribute_pure__;

/* Find the last occurrence of C in S (same as strrchr).  */
extern char *rindex (__const char *__s, int __c) __THROW __attribute_pure__;

/* Compare S1 and S2, ignoring case.  */
extern int strcasecmp (__const char *__s1, __const char *__s2)
     __THROW __attribute_pure__;

/* Compare no more than N chars of S1 and S2, ignoring case.  */
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     __THROW __attribute_pure__;

__END_DECLS

#endif /* string.h  */

#endif /* strings.h  */


|
我认为想解决问题可以通过 重新将linux下的string的调用,包括成员函数等重新替换成window下的,如果window中的string类没有的话就要自己实现或者改代码。 
   不知道能不能通过typedef或者预编译方式来移植,或者对string进行重载,使其成员和linux下的保持一致,这样应该可以少做工作,不过可行度未知。

|
我的意思是如果你按照linux的方式重写string类的话,就不需要该里面的代码了,只需要在前面用typedef下就行了。不过感觉这个应该比较麻烦

|
只拷头文件当然没用了,还得有库啊,而且vc.net也有string的库啊,可以把相关的string处理修改下就行了

|
这种头文件怎么能直接复制呢??这可是两个不同的平台啊

移植程序决不能这样做的。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 动态库调用symbol lookup error: /a.so: undefined symbol: sFun()
  • 求救:relocation error:symbol_ pure_virtual_: referenced symbol not found?急!急!
  • libxml2 编译程序 ERROR: Undefined symbol: .iconv_open
  • relocation error: /lib/libxerces-c.so.27: undefined symbol: u_toupper_3_4
  • ld: fatal: Symbol referencing errors. No output written to connect
  • 关于"symbol lookup error"问题的诡异现象,高手帮忙解释解释
  • java命名空间java.lang类error的类成员方法: error定义及介绍
  • php异常:Parse error: syntax error, unexpected eval()'d code error
  • java命名空间java.awt枚举trayicon.messagetype的类成员方法: error定义及介绍
  • runtime error与compile time error的区别?
  • java命名空间javax.tools枚举diagnostic.kind的类成员方法: error定义及介绍
  • Error Mounting /dev/acd0 on /dist: Input/output error(5)
  • java命名空间java.awt类mediatracker的类成员方法: errored定义及介绍
  • tar:error exit delayed from previous errors
  • java命名空间javax.lang.model.type枚举typekind的类成员方法: error定义及介绍
  • PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
  • java命名空间java.net类httpurlconnection的类成员方法: http_internal_error定义及介绍
  • PHP Parse Error: syntax error, unexpected $end 错误解决办法
  • java命名空间javax.xml.bind接口validationevent的类成员方法: error定义及介绍
  • error:syntax error before "va_mode_t"
  • java命名空间javax.swing类joptionpane的类成员方法: error_message定义及介绍
  • php异常parse error: syntax error, unexpected t_var错误怎么解决
  • java命名空间javax.swing类jfilechooser的类成员方法: error_option定义及介绍
  • PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
  • java命名空间java.net类httpurlconnection的类成员方法: http_server_error定义及介绍
  • ERROR: Error in Log_event::read_log_event()
  • java命名空间javax.management.monitor类monitornotification的类成员方法: threshold_error定义及介绍
  • php错误日志处理display_errors与log_errors用法区别


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3