#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