2013-12-17 54 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