ubuntu-Linux 下编译C出错(windows编译正常)

问题描述

Linux 下编译C出错(windows编译正常)

Ubuntu 15
gcc version 5.2.1
错误:

scritpt.hpp下是一个 命名空间
namespace script{
....
int setData( PyObject * pObj, Vector4 & rVal, const char * varName = "" );
int setData( PyObject * pObj, Matrix & rVal, const char * varName = "" );
int setData( PyObject * pObj, PyObject * & rVal,
const char * varName = "" );
int setData( PyObject * pObj, SmartPointer & rPyObject,
const char * varName = "" );
int setData( PyObject * pObj, Capabilities & rCaps,
const char * varName = "" );
int setData( PyObject * pObj, std::string & rString,
const char * varName = "" );
int setData( PyObject * pObj, std::wstring & rString,
const char * varName = "" );
int setData( PyObject * pObj, char * & rString,
const char * varName = "" );
int setData( PyObject * pObj, Mercury::Address & rAddr,
const char * varName = "" );

template <class T>
PyObject * getReadOnlyData( const T & d )
{
    return getData( d ); //出问题的地方126行
}

PyObject * getData( const bool data );
PyObject * getData( const int data );
PyObject * getData( const uint data );
....

}

stl_to_py.cpp
PyObject * Script::getData( const PySTLSequenceHolderBase & holder ) //出错位置
{
return new PySTLSequence(
const_cast(holder), holder.pOwner() );
}

stl_to_py.hpp 中
namespace Script
{
int setData( PyObject * pObject, PySTLSequenceHolderBase & data,
const char * varName = "" );

PyObject * getData( const PySTLSequenceHolderBase & data );

};

不知道哪里出错了,求大神指点

是有定义了的
定义在st_to_py.hpp中
note:
stl_to_py.cpp:506 'PyObjest * Script::getData(const PySTLSequenceHoldBase &) ' declared here ,later in the translation unit
PyObjest * Script::getData(const PySTLSequenceHoldBase & holder)

st_to_py.hpp 是 include了 script.hpp

这个在window环境下是能编译通过的

解决方案

把声明放前面试试:

PyObject * getData( const bool data );
PyObject * getData( const int data );
PyObject * getData( const uint data );

 template <class T>
PyObject * getReadOnlyData( const T & d )
{
    return getData( d ); //出问题的地方126行
}

解决方案二:

从出错信息看:getData( d )未定义,检查一下看看吧,没看到定义部分。

解决方案三:

this->getData

解决方案四:

方法未声明,,,,,

时间: 2024-08-20 12:00:33

ubuntu-Linux 下编译C出错(windows编译正常)的相关文章

Ubuntu Linux下与MOTO E2手机进行USB NET连接

为了能让E2能在UBUNTU下进行SyncML而忙乎.E2刷到了49P(屠龙刀),手机支持USB NET方式连接,在WINDOWS下装好驱动后,WINDOWS能顺利与E2进行USB NET连接,但无法使用同样的设置,使其工作在UBUNTU LINUX下. WINDOWS下网络连接自动获取到了IP地址:192.168.16.1,手机IP:192.168.16.2,可以PING通.Ubuntu下,无 须安装驱动,即可加载到usb网络连接usb0,不过不能自动获得IP.修改/etc/network/i

kafka linux下java客户端的详细编译步骤

问题描述 kafka linux下java客户端的详细编译步骤 求关于kafka在Linux 命令行下的java客户端详细编译步骤,网上直看到些程序代码但是具体编译过程很少

python-PYTHON 是在linux下运行好 还是windows下运行好?

问题描述 PYTHON 是在linux下运行好 还是windows下运行好? 用Python做web 有32位 64位限制吗? 解决方案 python本身无所谓,取决于你的程序,如果是服务器程序,或者是嵌入式程序,要求运行在linux环境下,就只能用linux,如果是客户端脚本,使用它的用户使用windows,那么就运行在windows下. 除非用到科学计算和很多内存(2GB+),否则32bit足够了.python是解释语言,所以只要有解释器,任何平台都没问题. 解决方案二: crossplan

boost在linux下序列化然后在windows反序列的问题

问题描述 boost在linux下序列化然后在windows反序列的问题 在linux下使用了boost的序列化,发现序列化的文件是 开始: &(此处有7个空格)serialization::archive& 正方形的符号我打不出来,用&代替 而我在windows下执行反序列化的时候 发现在读取文件头的时候错误,然后我最终代码,发现在读取serialization::archive的时候,之前多了4个0值 在windows下,正确的序列化文件应该是 &(此处有3个空格)se

mac下golang安装了windows编译环境后编译变慢_Golang

和同事协作开发golang项目的时候,同事是在windows平台上进行开发,一运行项目发现报错.后来在mac环境下面尝试调试,安装了windows的编译环境: 复制代码 代码如下: $ cd /usr/local/go/src/ $ sudo CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash 调试后发现原来是windows下是不支持fcntl,真是郁闷非常.后来在开发的时候发现mac下的编译测试包也明显变慢了,原来1,2秒就可以编译好了,现在

Linux下Nginx+Mysql+PHP的编译安装过程

Linux软件安装方式有很多,为了保证服务器运行的稳定性,很多人会采用编译软件安装源代码的方式来安装软件:下面我来把Godaddy VPS上的编译过程贴一下,包括安装过过程和遇到的一些问题,以及解决的办法等.需要说明的是,mysql的高级版本需要用cmake来编译 yum install gcc gcc-c++ make wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.32.tar.gz wget http://www.cmake.

ubuntu linux下使用Qt连接MySQL数据库的方法_Mysql

环境说明: ubuntu 10.04.2 QtSDK (1.5G安装包的那个) mysql5.1 1.安装MySQL Linux下完整的MySQL开发需要安装服务器端,如果安装客户端也没什么不好.直接在软件中心搜mysql,把client和server选上. server在安装时会提示为root用户设置密码,设一个好了. 我使用的是mysql5.1版本,用户名密码存储在一个叫mysql的数据库里,只有管理员级别才能看到. 如果直接在终端中输入 mysql,可能会提示ERROR 1045 (280

Debian/Ubuntu Linux下内核编程者必备

如果你想要升级你的Debian/Ubuntu Linux内核,或者你希望为内核开发新的模块,或者您要为某个硬件写新的驱动程序--这一切都涉及到Debian/Ubuntu Linux内核编程. 作为一个内核编程者,有那么几个软件是你必须要有的,看作是你进行内核编程的几件法宝吧,下面我一一列举出来: 1.gcc 大名鼎鼎的gcc我想没有人不知道的吧?它是任何编程者必然要先安装的一个武器了.不过一般如果你是安装的Debian系统,应该已经默认安装了的.要是Ubuntu你就安装一下吧,安装方法嘛,就是输

Linux下mount命令挂载windows共享文件步骤

挂接Windows文件共享 Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba软件包.现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba.可以到www.samba.org网站下载最.新的版本. 当windows系统共享设置好以后,就可以在linux客户端挂接(mount)了,具体操作如下: # mkdir –p /mnt/samba 注:建立