Неразрешенный внешний символ, несколько проектов, ошибка компоновщика Visual C ?

#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»{ … }