2013-12-17 58 views
0

我必須編譯和運行第三人稱項目,用C++編寫, 不幸的是,我沒有使用C++的經驗,在解決了所有打樁問題之後,我面對一系列鏈接問題。 我收到了很多我的課程,並收到了「undefined reference to」的典型鏈接錯誤 。由於代碼是真實的,並且由很多不同的文件組成,所以我向您展示了以下非常小的主文件,我在其中嘗試使用 編譯和運行我遇到的問題之一和地點即使在這個小程序中我也會得到相同的鏈接錯誤。 所以希望如果我設法找到解決這一點的代碼的方式,我會 管理與休息。在向你展示代碼本身之前,讓我先說ad- vanced,在這種情況下,我試圖從cplex.h和 中調用一個函數來保存你的一些建議,我已經正確安裝了cplex (有一件事是我可以驗證事實,我可以使用一些cplec函數和命令沒有問題),並且我還添加了cplex作爲我的外部庫(我使用Eclipse IDE)之一 ,而且我遇到了相同的lin- king error其他功能不是cplex。 最後,我在這個網站上對 網站的最近幾天進行了大量的研究,並且一般會關於鏈接錯誤而不能自己解決 的問題。結果任何人的幫助都非常感謝。 因此,這裏是代碼本身:鏈接我的項目的問題C++

#include <iostream> 
#include "/home/used/cplex/include/ilcplex/cplex.h"// that's my cplex.h path 
using namespace std; 
int main(){ 
      double temp; 
     int a,c; 
     CPXENVptr env;// in these two uses of cplex variables I don't get any error 
     CPXNETptr net;// 
     CPXNETgetdj(env , net , &temp , c , a); // when I try to use this or any function from cplex I get an linking error 
     return(0); 
} 

,因爲它是寫在cplex.h看到我做 功能的正確使用方法,讓我不要混淆我也呈現原有功能鏈接器錯誤地使用了 函數。

CPXLIBAPI 
int CPXPUBLIC 
CPXNETgetdj (CPXCENVptr env, CPXCNETptr net, double *dj, int begin, 
      int end); 

打印機錯誤本身是:

Building target: structures 
Invoking: Cross G++ Linker 
g++ -o "structures" ./src/div.o ./src/prod.o ./src/structures.o 
./src/structures.o: In function `main': 
/home/used/workspace/structures/Debug/../src/structures.cpp:21: undefined reference to `CPXNETgetdj' 
collect2: error: ld returned 1 exit status 
+1

那麼,你不鏈接到除你自己的源文件之外的任何東西。有沒有一個cplex庫你應該使用這些頭文件? – Collin

+0

Cplex庫是cplex.h(如果我沒有弄錯),另外,因爲我真的不熟悉鏈接進程上還有哪些鏈接源文件? – user3111197

+0

這只是圖書館的標題。它定義了可用的函數和使用的數據類型,而不是函數本身。 Cplex應該有一些你需要編譯成一個庫的源文件,並直接鏈接到你的項目中。 – Collin

回答

0

#include "/home/used/cplex/include/ilcplex/cplex.h"會的工作只有/在尋求包括。另外,沒有任何實際包含CPLEX庫的參數。

我建議將其更改爲#include "ilcplex/cplex.h"便攜性,然後運行它想:

g++ -o "structures" ./src/div.o ./src/prod.o ./src/structures.o \ 
    -I/home/used/cplex/include -L/home/used/cplex/lib/x86-64_debian4.0_4.1/static_pic \ 
    -lcplex -lilocplex 

但你必須做出什麼是圖書館的實際路徑(/home/used/cplex/lib/x86-64_debian4.0_4.1/static_pic是否正確路徑)和可能正確它是正確的。

根據找到的文件here

+0

沒有不幸工作... :( – user3111197

+0

檢查您的目錄,以確保有一些'lib'目錄 - 如果沒有你的安裝可能是不完整的。如果它在那裏,請嘗試我編輯的答案。 –

+0

我的cplex文件中有lib目錄(/home/used/cplex/lib/x86-64_debian4.0_4.1/static_pic),因爲我使用eclipse,所以我不確定如何將這個庫包含到我的程序中。 我應該嘗試更改從Eclipse自動生成的實際make文件嗎?還是什麼? – user3111197