Как включить .obj файлы в проект

#c

#c

Вопрос:

У меня следующий вопрос: мне дали задание — создать приложение. Был готовый файл counter.h и какой-то другой файл — counter.obj. Оказалось, что в counter.h были только объявления функций — как я могу включить .obj-файл в .cpp-файл, чтобы он компилировался? Я использую Microsoft Visual Studio 2010 — и в какую папку должен помещаться сам файл?

Ответ №1:

Добавьте obj-файл в решение так же, как вы бы поступили с cpp-файлами (обычно я делаю это перетаскиванием, то есть перетаскиваю файл из проводника Windows и помещаю его в проект в окне Solution Exporer).

Вы можете поместить obj-файл вместе с cpp-файлами; на самом деле это не имеет значения.

Комментарии:

1. @Owl Вы должны задать вопрос по этому поводу. Убедитесь, что вы точно описали свою ситуацию, что вы пробовали и как это не удалось.

Ответ №2:

Вы не можете включить объектный файл в cpp-файл.
Компилятор компилирует cpp-файл и генерирует obj-файлы, для каждого cpp-файла эти файлы дополнительно связываются вместе, чтобы создать libray или исполняемый файл.

Обычно вы связываете библиотеки ( .lib или .dll ) с приложением, проверяете, есть ли они у вас.

Если нет,

Вы можете попробовать связать объектный файл с вашим приложением,
перейдя в свойства проекта, затем из "Property Page" выберите узел "C/C " , который вы получите "Additional Include Directories" , добавьте имя вашего объектного файла.Храните свой obj-файл в каталоге, в котором находится ваш исходный код, или вы можете добавить каталог из:
Tools->Options->Projects and Solutions->VC Directories .

Я никогда не пробовал второй метод, за исключением академических проектов, что было много лет назад, поэтому не уверен в этом, пожалуйста, проверьте информацию в MSDN.

Комментарии:

1. Но что мне тогда делать, если у меня есть только объявление класса Counter в Counter.h, но нет определения его функции! Учитель дал мне дополнительно Counter.obj — как я могу запустить программу — Мне действительно не нужно знать реализацию класса, но мне нужен мой cpp для компиляции — и компилятор выдает: ошибка LNK2019: неразрешенный внешний символ «public: __thiscall Counter::Counter(int)» (??0Counter@@QAE@H@Z), на который ссылается функция _main

2. @ArtemMoskalev: Это ошибка компоновщика , потому что компоновщик не смог найти определение функции, которая находится в объектном файле, попробуйте метод, который я обновил в ответе.

3. фатальная ошибка LNK1120: 1 неразрешенные внешние файлы — все тот же, он не находит его! Может быть, проблема в том, как я показываю путь к файлу? Я поместил его в каталог, где main.cpp есть и в компоновщике написал: counter.obj