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

G++ 4.4.2和linux编译调用模板的函数,编译不通过,但是VC2005却可以。

    来源: 互联网  发布时间:2016-08-10

    本文导语:  之前的帖子格式不好。劳请版主删除之前的帖子。 谢谢。 调用的错误:  UserMgr::RPCallFunc(uint 64, uint32,uint32, RPCCall ) 调用没有匹配的函数备选为  RPCallFunc(uint 64, unint32, uint32, RPCaller&)[with RPCCaller = RPCCall ]  ...

之前的帖子格式不好。劳请版主删除之前的帖子。
谢谢。

调用的错误: 
UserMgr::RPCallFunc(uint 64, uint32,uint32, RPCCall ) 调用没有匹配的函数备选为 
RPCallFunc(uint 64, unint32, uint32, RPCaller&)[with RPCCaller = RPCCall ] 


初步分析下来,是由于类型没有正确替换而导致编译不通过。但是在VS2K5下编译是通过的。现在没有思路了各位帮忙。 

以下为工程的介绍 
RPCall的工程: 
大部分是模板对传进来的类型进行替换,而后被调用。注:该工程在VS2k5和linux都编译通过。 
RPCService的控制台程序,对RPCall进行调用。注:该工程在vs2k5下编译通过。在linux下在调用模板的函数的地方出错 

以下为代码: 
调用的地方 
Orgstatus(std::string& _name, uint32 guid, int _g) 

.... 
RPCallfunc(itr->second,GetSeq(),QUERY_FLAT,RPC_BIND_PARA(guid, _name,guid)//这里调用出错的。 


template  
bool RPCallfunc(uint64 guid,uint32 svrseq, uint32 funcSeq, RPCaller &caller, uint transid = 0, bool footy = fase) 

return RPCallfunc(guid,svrseq,funcseq,&caller,transid,footy); 


RPC_BIND_PARA方法: 
template  RPCCallP1  
RPC_BIND_PARA(A1 a1) 

return RPCCallP1 (a1); 

RPCCallP1类: 
tempalte  
class RPCCallP1: public IRPCCallP 

public: 
RPCCallP1(A1 &a):_a1(a1) 
{...} 
void operator()(wt& pkt){...} 
private: 
A1 _a1; } 
百思不得其解。尝试着指定其类型 RPCallP1  a = RPC_BIND_PARA(guid); 然后再进行调用,可以编译通过,但是接下来有很多的回调函数,使用地址的这种方法就无效了。有哪个朋友能帮下忙。谢谢。 

另外在linux下哪个编译器最接近VC2005的编译器呢?





|
如果你只能用vc的思维方式解决问题,建议你还是用vc编程。

|
我觉得这个问题还是值得考虑的。毕竟现在好多软件都需要有Windows版和Linux版。这个问题应该就是一个典型的源码多平台重用的问题。

一般情况可以用宏定义去解决………………

这个问题没看清楚具体的方案,观注中……&…………

    
 
 

您可能感兴趣的文章:

  • linux/centos源码安装nginx编译配置选项参数介绍
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • linux 64位编译出错。linux 32位可以编译过。
  • 关于在linux交叉编译powerpc-e300c3-linux-gcc的编译问题
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • linux下有没有能编译出16bit代码的C语言编译器?
  • 现要在一台Pentium100上安装LINUX操作系统,能不能不选用别的品牌的LINUX,而直接用内核编译,然后再加上编译器和SHELL等等其它东西?如
  • linux下可以编译c但是如何编译c++
  • arm-linux-gcc交叉编译出错,但gcc编译没错,什么原因呢???
  • 谁编译过PLX9054 Linux的驱动程序,我给100分教我编译和安装??
  • 何处有 Linux 内核编译配置详细的中文介绍? 我在重新配置编译时老是出错:-(
  • 想问一下,编译LINUX内核时,是否可以只编译其中的一个模块?
  • 在linux下用proc编译程序,'*.pc'文件编译后成了'*.c?',多了一个问号?
  • 请问在linux下编译程序怎么设置编译器字节对齐?
  • linux下g++怎么编译啊?我怎么编译不过去呢?
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • 有人说用vc++写的程序,代码可以直接拿到linux下找编译器,就可以编译,是真的吗?
  • 在linux+x86下用交叉编译器编译出能在solaris+x86运行的文件时遇到的问题
  • linux内核编译一定要在linux环境下么?
  • 书写基于Linux内核的键盘记录器(Writing Linux Kernel Keylogger)中的源码如何编译通过???
  • 菜鸟问题: redhat linux 编译一个最简单的c程序, 其中包含了<studio.h>头文件,但在gcc编译时,提示找不到studio.h文件,请问各位大大
  • Linux添加系统调用时如何调用C语言库函数
  • linux中为什么系统调用比普通函数调用更费时间?
  • 为什么我的BEAN 在WIN2000中调用没有问题,但在LINUX中调用有问题
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件
  • LINUX下系统调用是不能中断的,要怎么改造成可以中断系统调用?
  • 请问linux中的系统调用号是如何跟系统调用表对应起来的
  • 新手:Linux下使用第三方C库(openssl),是调用.so文件还是直接调用.h文件?
  • linux系统调用问题
  • 我如何调用 内核函数 /linux/fs 里面的内核 函数:比如 自己的程序调用 ext3_delete_inode
  • 关于Linux系统调用的问题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • linux c下利用srand和rand函数生成随机字符串
  • 哪位大侠有unix/linux的函数和函数所在的文件
  • Linux下c基于openssl生成MD5的函数
  • linux中,动态库中的函数如何调用静态库中的函数
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • linux0.11内核有些函数是封装的吗?比如timer_interrupt()函数。
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • linux下自带了soup函数库和XML处理函数库了吗?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • linux下类的成员函数不可以作为自定义的信号处理函数么?
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • Linux有定时器函数吗?是不是要自己实现?如果有的话是什么函数呢?谢谢
  • linux c malloc函数定义及用法详解
  • linux c入门问题,大家指教。system函数和exec函数的区别。
  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • linux 2.6.35.4 内核中已没有netif_rx_schedule()函数,那替代函数是啥?
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • wcslen 等函数能用在linux下面吗?文件路径搜索有没有跨平台的函数库?
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • Linux 下析构函数为什么不是虚函数?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性


  • 站内导航:


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

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

    浙ICP备11055608号-3