У меня странная проблема с использованием Qt Creator, которую я не могу воспроизвести с помощью Visual Studio.
Для проекта, с которым я работаю, мне нужно использовать стороннюю dll, и для этого мне нужно включить в код также соответствующий заголовочный файл. Однако, хотя заголовочный файл имеет набор
#ifndef VICON
#define VICON
//...
#endif // VICON
Настораживает, как только я включаю заголовок в более чем один файл исходного кода (прямо или косвенно), я получаю следующие ошибки компоновки:
mainwindow.obj: -1: ошибка: LNK2005: "класс std :: basic_ostream> & __cdecl ViconDataStreamSDK :: CPP :: operator << (класс std :: basic_ostream> &", класс ViconDataStreamSDK :: CPP: : String const &) "(?? 6CPP @ ViconDataStreamSDK @@ YAAAV? $ Basic_ostream @ DU? $ Char_traits @ D @ std @@@ std @@ AAV23 @ ABVString @ 01 @@ Z) уже определено в main.obj
debug \ Beetle_01.exe: -1: ошибка: LNK1169: найден один или несколько кратно определенных символов
Я могу предоставить вам исходный код, но это, кажется, не имеет значения, даже если я не вызываю что-либо из этой DLL, как только соответствующий заголовочный файл появляется в нескольких местах, я получаю ошибки выше. Нет проблем, если заголовочный файл находится только в одном месте, я могу затем вызвать его содержимое, и все работает как положено.
Вот как я включаю dll в файл .pro, надеюсь, это правильный путь:
INCLUDEPATH += .
win32:LIBS += ViconDataStreamSDK_CPP.lib
(и соответствующие файлы lib, dll и h находятся в текущем каталоге)
Я пишу на Windows 7, кстати.