2016-04-13 5 views
0

Я пытаюсь скомпилировать тестовые программы Live555 в Visual Studio 2010, но я не смог этого сделать.Live555 и Visual Studio 2010

Я собирал библиотеку без каких-либо проблем

BasicUsageEnvironment.lib
groupsock.lib
liveMedia.lib
UsageEnvironment.lib

, но когда дело доходит до тестовых программ, Я просто не мог никуда добраться. Вот компилятор, когда я компилирую файлы в mediaServer.

Неужели кто-нибудь столкнулся с этой проблемой раньше?

error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" ([email protected][email protected]) 
error LNK2001: unresolved external symbol "void * __cdecl operator new(unsigned int)" ([email protected]@Z) 
error LNK2001: unresolved external symbol ___security_cookie 
error LNK2001: unresolved external symbol ___CxxFrameHandler3 
error LNK2001: unresolved external symbol @[email protected] 
error LNK2001: unresolved external symbol __RTC_CheckEsp 
error LNK2001: unresolved external symbol __RTC_Shutdown 
error LNK2001: unresolved external symbol __RTC_Shutdown 
error LNK2001: unresolved external symbol __RTC_InitBase 
error LNK2001: unresolved external symbol "const type_info::`vftable'" ([email protected]@[email protected]) 
error LNK2001: unresolved external symbol "public: virtual bool __thiscall Medium::isSource(void)const " ([email protected]@@UBE_NXZ) 
<more errors> 

Полный дамп здесь: http://pastebin.com/4bVQAcdp


Update

мне не удалось построить проект раньше, потому что мы отключили опцию «Скомпилированная заголовок» при создании проектов для всех библиотек. При связывании библиотек с моим проектом mediaServer VS не смог разрешить все функции.

Я смог заставить его работать, восстановив их с опцией «Предварительно скомпилированный заголовок», и добавьте #include "stdafx.h" в каждый * .cpp-файл.

Понятия: У меня такое ощущение, что мне нужно включить опцию «Предварительно скомпилированный заголовок» для проекта mediaServer. Дайте мне знать, если вы попробовали и преуспели. ;-)


Обновление 2

Нет. Мне пришлось включить Precompiled Header для каждого из проектов статической библиотеки. И добавьте #include "stdafx.h" в файлы ~ 200 * .cpp. Ага.

+0

Похоже, что это не ссылка в * .lib, которую вы создаете. И недостаток 'delete' выглядит как-то не так с настройками библиотеки времени выполнения, либо с неправильным использованием, либо с добавлением проверок RTC и т. Д. – Niall

+0

Есть ли что-то, что я пропустил? Инструкции здесь выглядят довольно прямолинейно: http://lists.live555.com/pipermail/live-devel/2012-January/014476.html – bot1131357

+0

Эти инструкции являются неопределенными «Я добавил все это, и это сработало», как будто им посчастливилось противостоять к каким должны быть все настройки. Все эти статические библиотеки или библиотеки импорта для DLL? Если для dlls - функции, которые экспортируются и импортируются должным образом. Вы постоянно используете одни и те же флаги библиотеки времени выполнения ('/ MT' или'/MD'), являются ли ваши проверки безопасности во время выполнения одинаковыми для всех проектов? Наборы символов и т. Д. – Niall

ответ

2

Update
Я посмотрел на свой полный дамп:

1>UsageEnvironment.lib(HashTable.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" ([email protected]@Z) 

На основе этой первой ошибки, что когда-либо источник, который вы скомпилированный для UsageEnviroment Lib, имеет ссылку на удаления оператора функция. Я предполагаю, что либо у вас нет правильного исходного кода, который вы его изменили. Можете вставить содержимое файла UsageEnvironment.hh?


мне довелось работать на строительстве этого прямо сейчас, я только что получил его работу сегодня утром, и по вашему запросу я составил Программа испытаний «Mediaserver». Мы работаем с несколькими предположениями здесь, мы предполагаем, что вы правильно построили статические библиотеки.

Предполагая, что статические библиотеки правильно это решение ваш ищет:

включают:

c:\Live555\BasicUsageEnvironment\include 
c:\Live555\liveMedia\include 
c:\Live555\UsageEnvironment\include; 
c:\Live555\groupsock\include 
$(IncludePath) 

Lib Дорожки:

"*Insert path to your lib files here*"; 
$(LibraryPath) 

Linker вход:

Ws2_32.lib 
groupsock.lib 
BasicUsageEnvironment.lib 
liveMedia.lib 
UsageEnvironment.lib 
libBasicUsageEnvironment.lib 
libgroupsock.lib 

папка Ваше решение должно выглядеть следующим образом: Убедитесь, что файлы в Жирный есть.

Solution Explorer Screenshot

вашей папки Источник должен иметь следующие файлы:

Mediaserver:

**DynamicRTSPServer.cpp** 
**DynamicRTSPServer.hh** 
**live555MediaServer.cpp** 
mediaServer.vcxproj 
mediaServer.vcxproj.filters 
ReadMe.txt 
**rtcp_from_spec.c** 
**rtcp_from_spec.h** 
stdafx.cpp 
stdafx.h 
targetver.h 
**version.hh** 

enter image description here Основываясь на ваших ошибках свой внешний вид, как у вас есть неправильные исходные файлы, включенные в ваш проекта, эти неразрешенные ссылки не отображаются нигде в файле tar5 проекта проекта live555. http://live555.com/liveMedia/public/live555-latest.tar.gz

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

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