討論區快速選單
知識庫快速選單
網路投保旅行平安險 軟體開發過程中有哪些資安漏洞? 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
請問我為什麼不能compile C++程式?
更改我的閱讀文章字型大小
作者 : proc(proc)
[ 貼文 9 | 人氣 2761 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/2 下午 07:00:38
我用的是Redhat 9, kernel 2.4.20-8, gcc 3.2.2, glibc 2.3.2
我compile "Display.cpp"之後,出現以下訊息:
In file included from /usr/include/c++/3.2.2/bits/char_traits.h:45,
     from /usr/include/c++/3.2.2/ios:46,
     from /usr/include/c++/3.2.2/ostream:45,
     from /usr/include/c++/3.2.2/iostream:45,
     from Display.cpp:3:
/usr/include/c++/3.2.2/cstring:79: `memcpy' not declared
/usr/include/c++/3.2.2/cstring:80: `memmove' not declared
/usr/include/c++/3.2.2/cstring:81: `strcpy' not declared
/usr/include/c++/3.2.2/cstring:82: `strncpy' not declared
/usr/include/c++/3.2.2/cstring:83: `strcat' not declared
/usr/include/c++/3.2.2/cstring:84: `strncat' not declared
/usr/include/c++/3.2.2/cstring:85: `memcmp' not declared
/usr/include/c++/3.2.2/cstring:86: `strcmp' not declared
/usr/include/c++/3.2.2/cstring:87: `strcoll' not declared
/usr/include/c++/3.2.2/cstring:88: `strncmp' not declared
/usr/include/c++/3.2.2/cstring:89: `strxfrm' not declared
/usr/include/c++/3.2.2/cstring:90: `strcspn' not declared
/usr/include/c++/3.2.2/cstring:91: `strspn' not declared
/usr/include/c++/3.2.2/cstring:92: `strtok' not declared
/usr/include/c++/3.2.2/cstring:93: `memset' not declared
/usr/include/c++/3.2.2/cstring:94: `strerror' not declared
/usr/include/c++/3.2.2/cstring:95: `strlen' not declared
/usr/include/c++/3.2.2/cstring:97: `memchr' not declared
/usr/include/c++/3.2.2/cstring: In function `void* std::memchr(void*, int,
   unsigned int)':
/usr/include/c++/3.2.2/cstring:101: invalid conversion from `const void*' to `
   void*'
/usr/include/c++/3.2.2/cstring: At global scope:
..............................
為什麼???
作者 : proc(proc)
[ 貼文 9 | 人氣 2761 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/2 下午 11:00:41
不能用include <cstring>??
作者 : alvin_tseng(阿海伯)
[ 貼文 50 | 人氣 622 | 評價 260 | 評價/貼文 5.2 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/3 上午 12:37:21
先把code post上來
人家才能幫你
作者 : studentc(又改暱稱) 貼文超過200則
[ 貼文 229 | 人氣 3917 | 評價 390 | 評價/貼文 1.7 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/3 下午 11:10:17

雖然應該要有原始碼才比較好看原因, 但大概可以推測...

>我用的是Redhat 9, kernel 2.4.20-8, gcc 3.2.2, glibc 2.3.2
>我compile 'Display.cpp'之後,出現以下訊息:

用的是 gcc 編譯 c++ 程式碼?
請先改用 g++ 試試看吧.... 如果不行的話, 再看看你的 c++ 有沒有少了什麼...
例如 iostream, 或是沒有指定 namespace ?
作者 : proc(proc)
[ 貼文 9 | 人氣 2761 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/5 下午 05:31:15
這裡的回覆有字數限制吧,而且檔案不只一個*.cpp 和*.h有數十個,所以我想不能全post出來了!

程式在 Redhat Linux 6.2 compile是沒有問題的,但後來要增加 user login 的部份,要用ini 檔案儲存資料,我才用了<cstring>,之後compile便有問題了。

錯誤訊息:
In file included from /usr/include/c++/3.2.2/bits/char_traits.h:45,
     from /usr/include/c++/3.2.2/ios:46,
     from /usr/include/c++/3.2.2/ostream:45,
     from /usr/include/c++/3.2.2/iostream:45,
     from Display.cpp:3:

當中的char_traits.h第45行:
#incluse <cstring>

我想是這裡出問題吧,而其後的ios,ostream和iostream,也因char_traits.h不能compile而出錯,當然cstring,char_traits.h,ios,ostream和iostream這些檔案我都沒有改動過,究竟為什麼呢?因為cstring 是MFC,不能用在Linux?

Display.cpp節錄如下:
#include "Display.h"
#include <stdio.h>
#include <iostream>
#include "KeyBoard.h"

#ifdef _LINUX_ // on linux

extern "C"
{
//for bmp display
#include "bmp.h"
#include "crtc.h"
#include "dump.h"
#include "ge.h"
#include "host.h"
#include "param.h"
#include "perf.h"
#include "random.h"
#include "resource.h"

//for video stream forward
#include "host.h"
#include "bmp.h"
#include "crtc.h"
#include "cursor.h"
#include "dump.h"
#include "framebuf.h"
#include "generic.h"
#include "host.h"
#include "param.h"
#include "perf.h"
#include "saa.h"
#include "trace.h"
#include "vip.h"
#include "vpipe.h"
#include "vpx.h"
#define SMPMAIN_DISPLAY_CRTC 0x2
#define SMPMAIN_DISPLAY_VPIPE 0x3
#define SMPMAIN_DISPLAY_NONE 0x4


}

#define SAMPLE_MARGIN 10L

Display::Display()
{
}

Display::~Display()
{
}


bool Display::init()
{
return true;
}
.....................
請教高手了!!
作者 : proc(proc)
[ 貼文 9 | 人氣 2761 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/5 下午 05:37:28
gcc 和g++都用過了,但是結果一樣。

g++ -D_LINUX_ -I$PATH_INCLUDE -L$PATH_LIB -O2 -T1 -g -c -o $PATH_LIB/Display.o Display.cpp


gcc -D_LINUX_ -I$PATH_INCLUDE -L$PATH_LIB -O2 -T1 -g -c -o $PATH_LIB/Display.o Display.cpp
作者 : studentc(又改暱稱) 貼文超過200則
[ 貼文 229 | 人氣 3917 | 評價 390 | 評價/貼文 1.7 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/5 下午 08:26:48
>我想是這裡出問題吧,而其後的ios,ostream和iostream,也因char_traits.h不能compile而出錯,當然cstring,char_traits.h,ios,ostream和iostream這些檔案我都沒有改動過,究竟為什麼呢?因為cstring 是MFC,不能用在Linux?

cstring ? 還是 CString ?
如果是前者, 可以改成 string.h 試試看, 基本上 cstring 就是 include string.h 以及一些其他的東西, 後者你就自求多福吧, 那是 MFC 的東西, 是不可能輕鬆轉到 Linux 底下的...

作者 : proc(proc)
[ 貼文 9 | 人氣 2761 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/7 下午 05:20:26
是cstring,不是CString

可是我的檔案中,從沒有使用
#include <cstring>

只有使用
include <string>
或是
include <string.h>

事實上cstring,char_traits.h,ios,ostream和iostream都是compiler的檔案,都不是我寫的,你可以看看錯誤訊息中的路徑
In file included from /usr/include/c++/3.2.2/bits/char_traits.h:45,
     from /usr/include/c++/3.2.2/string:47
.........
我可以更改cstring,char_traits.h,ios,ostream和iostream嗎?
作者 : proc(proc)
[ 貼文 9 | 人氣 2761 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/7 下午 05:22:37
cstring 如下:
/** @file cstring
 * This is a Standard C++ Library file. You should @c #include this file
 * in your programs, rather than any of the "*.h" implementation files.
 * This is the C++ version of the Standard C Library header @c string.h,
 * and its contents are (mostly) the same as that header, but are all
 * contained in the namespace @c std.
 */
#ifndef _CPP_CSTRING
#define _CPP_CSTRING 1
#pragma GCC system_header
#include <cstddef>
#include <string.h>

// Get rid of those macros defined in <string.h> in lieu of real functions.
#undef memcpy
#undef memmove
#undef strcpy
#undef strncpy
#undef strcat
#undef strncat
#undef memcmp
#undef strcmp
#undef strcoll
#undef strncmp
#undef strxfrm
#undef memchr
#undef strchr
#undef strcspn
#undef strpbrk
#undef strrchr
#undef strspn
#undef strstr
#undef strtok
#undef memset
#undef strerror
#undef strlen

namespace std
{
  using ::memcpy;
  using ::memmove;
  using ::strcpy;
  using ::strncpy;
  using ::strcat;
  using ::strncat;
  using ::memcmp;
  using ::strcmp;
  using ::strcoll;
  using ::strncmp;
  using ::strxfrm;
  using ::strcspn;
  using ::strspn;
  using ::strtok;
  using ::memset;
  using ::strerror;
  using ::strlen;

  using ::memchr;

  inline void*
  memchr(void* __p, int __c, size_t __n)
  { return __builtin_memchr(const_cast<const void*>(__p), __c, __n); }

  using ::strchr;

  inline char* strchr(char* __s1, int __n)
  { return __builtin_strchr(const_cast<const char*>(__s1), __n); }

  using ::strpbrk;

  inline char* strpbrk(char* __s1, const char* __s2)
  { return __builtin_strpbrk(const_cast<const char*>(__s1), __s2); }

  using ::strrchr;

  inline char*
  strrchr(char* __s1, int __n)
  { return __builtin_strrchr(const_cast<const char*>(__s1), __n); }

  using ::strstr;

  inline char* strstr(char* __s1, const char* __s2)
  { return __builtin_strstr(const_cast<const char*>(__s1), __s2); }
}
#endif
作者 : proc(proc)
[ 貼文 9 | 人氣 2761 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/7 下午 05:24:55
string如下:
// Components for manipulating sequences of characters -*- C++ -*-

// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

// This 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 General Public License for more details.

// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

//
// ISO C++ 14882: 21 Strings library
//
/** @file string
 * This is a Standard C++ Library header. You should @c #include this header
 * in your programs, rather than any of the "st[dl]_*.h" implementation files.
 */

#ifndef _CPP_STRING
#define _CPP_STRING 1

#pragma GCC system_header

#include <bits/c++config.h>
#include <bits/stringfwd.h>
#include <bits/char_traits.h>
#include <memory> // For allocator.
#include <bits/type_traits.h>
#include <iosfwd> // For operators >>, <<, and getline decls.
#include <bits/stl_iterator.h>
#include <bits/stl_function.h> // For less
#include <bits/basic_string.h>

#ifdef _GLIBCPP_NO_TEMPLATE_EXPORT
# include <algorithm> // for find_if
# include <bits/basic_string.tcc>
#endif

#endif /* _CPP_STRING */
 板主 : maple-leaf
 > UNIX - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - UNIX - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
UNIX
1 Anderson 1130 
2 old cat 450 
3 maple-leaf 420 
4 MooCow 310 
5 又改暱稱 290 
6 青衫 200 
7 sazabi 200 
8 member one 200 
9 愛睏魚 190 
10 pail 160 
UNIX
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125