Visual Studios (несколько проектов) Ошибка связывания

Я работаю с Qt и Cryengine в визуальных студиях. Я очень плохо знаком с крупными проектами, такими как этот, но я почти на грани добавления чего-то в этот движок. Мой код компилируется по частям, но когда я пытаюсь скомпилировать свой проект "Инди-игра", я получаю ссылки на ошибки, которые после исследования я все еще не знаю, как их решить. Я знаю, что ошибки относятся к моему коду InventoryGUI, потому что когда я удаляю этот файл, проект компилируется без ошибок компоновки.

Это мой код InventoryGUI и ошибка, которая отображается при попытке собрать инди-игру http://imgur.com/hzmGdvH

Это заголовочный файл, который он включает. http://imgur.com/o22GHXg

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

Спасибо

Изменить: Забыл добавить, что функция "createInventory()" вызывает функцию InventoryGUI из другого проекта. Я считаю, что переход между проектами, скорее всего, является причиной ошибок.

1 ответ

Если InventoryGUI Класс определяется в разделяемой библиотеке ("dll") и используется в исполняемом файле, затем вы должны экспортировать его символы (в сборке Windows). так что попробуйте что-то вроде:

#ifdef WIN32
#   ifdef MY_LIB_EXPORTS
#      define MY_LIB_DLL   __declspec(dllexport)
#   else
#      define MY_LIB_DLL   __declspec(dllimport)
#   endif
#else
#   define MY_LIB_DLL
#endif

class MY_LIB_DLL InventoryGUI
{
...
};

Затем библиотека, определяющая InventoryGUI должен был определить MY_LIB_EXPORTS, Например, если вы используете систему Pro Files, это будет выглядеть так

DEFINES += MY_LIB_EXPORTS

Других проектов не должно. Проверьте, есть ли подобный механизм для других классов библиотеки.

Другие вопросы по тегам