我正在尝试在Visual Studio 2010中编译Live555测试程序,但无法这样做。
我编译库没有任何问题
BasicUsageEnvironment.lib
groupsock.lib
liveMedia.lib
UsageEnvironment.lib
但是当涉及到测试程序时,我什么也做不了。这是我在mediaServer
中编译文件时的编译器消息。
有人遇到过这个问题吗?
error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)
error LNK2001: unresolved external symbol "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)
error LNK2001: unresolved external symbol ___security_cookie
error LNK2001: unresolved external symbol ___CxxFrameHandler3
error LNK2001: unresolved external symbol @__security_check_cookie@4
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'" (??_7type_info@@6B@)
error LNK2001: unresolved external symbol "public: virtual bool __thiscall Medium::isSource(void)const " (?isSource@Medium@@UBE_NXZ)
<more errors>
在此处完成转储:http://pastebin.com/4bVQAcdp
更新资料
我无法更早地构建项目,因为在为所有库创建项目时未选中“预编译头”选项。将库链接到我的mediaServer项目时,VS无法解析所有功能。
我能够通过选中“预编译头”选项来重建它们并将其添加到每个* .cpp文件中,以使其工作。
事后思考:我有一种感觉,我只需要为mediaServer项目打开“ Precompiled header”选项。让我知道您是否尝试过并成功。 ;-)
更新2
不。我必须为每个静态库项目都启用“预编译头”。并将
#include "stdafx.h"
添加到〜200 * .cpp文件中。是的 最佳答案
更新资料
我看了看你的完整转储:
1>UsageEnvironment.lib(HashTable.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)
基于此第一个错误,为您的UsageEnviroment Lib编译的源均引用了delete运算符功能。我的猜测是,要么您没有正确的源代码,要么对其进行了更改。可以粘贴UsageEnvironment.hh文件内容吗?
我碰巧正在立即进行构建,今天早上才开始工作,并且根据您的要求,我编译了测试程序“ mediaServer”。在这里,我们基于一些假设,假设您正确构建了静态库。
假设静态库是正确的,那么这就是您要寻找的解决方案:
包括:
c:\Live555\BasicUsageEnvironment\include
c:\Live555\liveMedia\include
c:\Live555\UsageEnvironment\include;
c:\Live555\groupsock\include
$(IncludePath)
库路径:
"*Insert path to your lib files here*";
$(LibraryPath)
链接器输入:
Ws2_32.lib
groupsock.lib
BasicUsageEnvironment.lib
liveMedia.lib
UsageEnvironment.lib
libBasicUsageEnvironment.lib
libgroupsock.lib
您的解决方案文件夹应如下所示:
确保以粗体显示文件。
您的源文件夹应具有以下文件:
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**
根据您的错误,看起来您的项目中包含不正确的源文件,那些未解析的引用不会出现在live555项目tar文件中的任何位置。
http://live555.com/liveMedia/public/live555-latest.tar.gz
如果此解决方案不起作用,请为以下选项卡提供项目设置的屏幕截图:
包含目录
链接器输入
项目文件夹的文件列表。
让我知道是否有帮助,如果不起作用,我们将不得不研究静态库的构建方式。我们需要查看在您的代码中的哪些地方创建了这些外部引用,并且正在做的那些引用都需要排除在外,因为它们没有出现在下面链接所引用的live555存档中。