2012-05-18 144 views
0

我完全不熟悉C++,但是我創建了一個小程序,希望將程序移植到其他計算機,但是當我「安裝」程序時,出現此錯誤...- static-libgcc - static-libstdC++ missing,是否有一個文件應該包含在程序本身中,還是我必須在每臺計算機上安裝一個庫?我期望運行該程序的計算機將是Windows XP。該文件的源代碼如下:MinGW可移植性

#include <stdlib.h> 
#include <windows.h> 
#include <direct.h> 
#include <string.h> 
#include <string> 
#include <iostream> 
using namespace std; 

int main(int argc, const char *argv[]) 
{ 
    _chdir("C:\\Program Files\\NCHSoftware\\Talk\\"); 
    string number = "start talk.exe -dial " + std::string(argv[1]+4); 
    system(number.c_str()); 
    exit; 
    return 0; 
} 
+2

大多數人會用shell腳本或.bat文件來做到這一點,而不是C++程序。 –

+3

您是否能夠在開發它的機器上運行該程序?這裏真正存在的問題是鏈接器設置/標誌,而不是源代碼。發佈'objdump -p * your_executable * |的輸出grep NEEDED' –

+0

我是否在命令提示符下執行此操作?原諒我,但正如我所說我是新來的C++這實際上是我的第一個程序。當我在cmd中輸入時,沒有任何反應。程序在我開發的機器上運行良好。 – user1401863

回答

2

它們是共享的lib,需要在主機上。

學習如何編譯靜態版本;
請參閱:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
請閱讀「-static-libgcc」&「-static-libstdC++」部分。

+0

我也讀過,我不太明白我應該在哪裏鏈接。 – user1401863

+0

謝謝我試圖尋找一個鏈接的例子,我理解了這個概念,但不知道該怎麼做,最後我編譯成了g ++ -static-libgcc -static-libstdC++ dial.cpp -o dial .exe,程序運行良好。當我讀它確實使文件更大,但因爲這不是一個直接的問題,我很好。 – user1401863