Проблемы со связыванием моего проекта C ++

0

Я должен скомпилировать и запустить проект третьего лица, который написан на C++, к сожалению, у меня нет опыта работы с C++, и после решения всех проблем с укладкой com- я сталкиваюсь с рядом проблем с привязкой. Я получаю для многих своих классов и функций типичную ошибку привязки "неопределенной ссылки на". Поскольку код real- огромный и состоит из множества разных файлов, я представляю вам следующий очень маленький основной файл, в котором я пытаюсь скомпилировать и запустить с помощью одной из функций, с которыми у меня возникла проблема, и где я также получите даже в этой небольшой программе ту же ошибку связывания. Поэтому, надеюсь, если мне удастся найти способ решить эту часть кода, я с удовольствием справичу. Прежде чем показывать вам сам код, позвольте мне сказать в ad-, что в этом случае я пытаюсь вызвать функцию из cplex.h и сохранить вас от некоторых предложений, которые я уже установил правильно cplex (одна вещь, которую я могу проверить из того, что я могу использовать некоторые cplec func- и команды без проблем), и что я также добавил cplex как одну из моих внешних библиотек (я использую Eclipse IDE), более того, я испытываю ту же ошибку lin- king для других функций а не cplex. Наконец, я подробно исследовал последние пару дней на этом веб-сайте и вообще о связи ошибок, не имея возможности самостоятельно решать. В результате всякая помощь очень ценится. Итак, вот код:

#include <iostream>
#include "/home/used/cplex/include/ilcplex/cplex.h"// that 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, которую вы должны использовать с этими заголовочными файлами?
  • 0
    Библиотека Cplex - это cplex.h (если я не ошибаюсь), более того, потому что я действительно не знаком со связыванием процессов, на что еще я должен связывать мои исходные файлы?
Показать ещё 2 комментария
Теги:
linker-errors

1 ответ

1
Лучший ответ

#include "/home/used/cplex/include/ilcplex/cplex.h" будет работать только в том случае, если / был в #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 - правильный путь) и, возможно, исправить его вправо.

На основании документации, найденной здесь.

  • 0
    Не сработало, к сожалению ... :(
  • 0
    Проверьте ваши каталоги, чтобы убедиться, что есть какой-то каталог lib - если нет, ваша установка может быть неполной. Если это так, попробуйте мой отредактированный ответ.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню