2014-01-28 1 views
1

Установка: Я успешно скомпилирован DarkGDK, библиотека, предназначенную для использования с DirectX SDK 2007 и VS 2008, в VS 2013 с DirectX SDK 2010. Я заменил одну из библиотек компонентов специальной библиотекой-заглушкой для разрешения конфликтов DirectX. Я смог успешно скомпилировать все эти библиотеки компонентов.Я пытаюсь использовать библиотеку в 2005 эпохи с MSVC 2013, но я получаю неразрешенные внешние ошибки в режиме выпуска

Проблема: Когда я составляю мой проект, который использует библиотеки DarkGDK в режиме выпуска, все работает, как ожидалось. Я получаю окно с сообщением о том, что двоичный файл был создан без отладочной информации, но моя программа работает. Однако в режиме Debug я получаю ряд ошибок. Ниже приведен образец, который, я считаю, представляет собой лот хорошо:

1>convmdl.lib(ConvMDL.obj) : error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function "void __cdecl QuaternionSlerp(float const * const,float * const,float,float * const)" ([email protected]@[email protected]) 
1>libcpmtd.lib(stdthrow.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>system.lib(CSystemC.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>system.lib(dxdiaginfo.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>convx.lib(ConvX.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>convmd3.lib(ConvMD3.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(CBSPTree.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(CCompiler.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(ProcessHSR.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>world.lib(Patch.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(Universe.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(cLightMaps.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(CSG.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(NVMeshMenderD3DX.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>image.lib(CImageC.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>animation.lib(CAnimation.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(DBOFormat.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>basic3D.lib(CObjectManagerC.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>core.lib(RenderList.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>display.lib(CGfxC.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>file.lib(CFileC.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>sprites.lib(CSpriteManagerC.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 
1>Debug\Weapon Creator 2 - Project Golden Girl.exe : fatal error LNK1120: 1 unresolved externals 

Я искал эту проблему в течение нескольких дней. Я проверил все настройки проектов, которые принадлежат библиотеке DarkGDK, и настройки моего собственного проекта. В конфигурации Debug все они используют «многопоточную Debug (/ MTd)».

TL; DR Я получаю выше ошибки при попытке компиляции проекта в отладки конфигурации, которая использует DarkGDK библиотеку. Все проекты имеют те же настройки библиотеки Windows и C.

Спасибо!

Редактировать: ошибки были изменены, чтобы отразить вклад Дофича.

+0

Благодарим за быстрый ответ. Добавление atls.lib устраняет эту проблему. Есть ли проблема с использованием atls vs atlsd в конфигурации Debug? –

+0

Вы должны использовать 'atlsd' в debug и' atls' в выпуске. –

+0

atlsd дает следующую ошибку: LINK: фатальная ошибка LNK1104: невозможно открыть файл 'atlsd.lib' –

ответ

1

Вы смешиваете время отладки и отпускания.

__CrtDbgReportW существует только в среде отладки. Если это не разрешено, значит, вы, вероятно, компилируете с использованием среды исполнения релиза, но в одной из ваших библиотек используется время отладки. Вы должны перекомпилировать один или другой, поэтому они оба используют одну и ту же версию.

Вы можете найти свойство выполнения на Project Properties -> C/C++ -> Code Generation -> Runtime Library

Для неразрешенного символа АТЛ, я считаю, нужно связать atls.lib.

+1

В Visual C++ 2013 больше нет atlsd.lib. atls.lib может использоваться как в сборках релизов, так и для отладки. –

+0

Я проверил все настройки проектов, принадлежащие библиотеке DarkGDK, и настройки моего собственного проекта. В конфигурации Debug все они используют «многопоточную Debug (/ MTd)». Проблема atls решена, но все еще сохраняются другие ошибки связи. Я редактирую оригинальный пост с полными сообщениями об ошибках. –

+0

Попробуйте изменить их все на/MDd (многопоточная отладка DLL) –

 Смежные вопросы

  • Нет связанных вопросов^_^