#c #reference #linker #project
#c #ссылка #компоновщик #проект
Вопрос:
У меня есть два проекта, мой собственный и фреймворк, который я пытаюсь использовать. Проекты расположены в разных каталогах, но оба добавлены в мое решение, и у меня все ссылки «работают» (в соответствии с компилятором (?) и intellisense), добавив местоположение фреймворка в дополнительные пути для моего собственного проекта.
Я могу создать переменную типа, определенного в фреймворке, но когда я добавляю вызов функции к одной из функций в фреймворке, я получаю «неразрешенный внешний символ _GMI_Image_create.
Есть ли что-то еще, что я должен сделать, чтобы компоновщик понял, где найти GMI_Image_create? Почему я могу создать свою функцию, но не вызвать функцию?
Я не могу вставить какие-либо большие части кода, поскольку это собственность компании, но я надеюсь, что я был достаточно конкретен!
Оба проекта написаны на C, хотя не уверен, использует ли фреймворк что-либо, написанное на C .
Ответ №1:
Вы должны добавить .библиотека фрейма работает с вашими проектами, которые ссылаются на них. В настройках компоновщика и каталоге libs есть дополнительная директива include. Вам нужно и то, и другое, чтобы заставить компоновщик найти библиотеку.
Комментарии:
1. Итак, я должен скомпилировать проект framework в .lib? Я не могу просто как-то ссылаться на некомпилированный код фреймворка?
2. Только в том случае, если весь код находится в файлах заголовка. Вы можете добавить все файлы в свой проект, и компоновщик сможет затем найти все объектные файлы, но не делайте этого.
Ответ №2:
Перейдите в Проект> C / C > Дополнительно> Скомпилировать как, затем измените на «скомпилировать как c / TC»
Комментарии:
1. или инкапсулировать с помощью extern «C»{ … }