我正在尝试在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


您的解决方案文件夹应如下所示:
确保以粗体显示文件。

c&#43;&#43; - Live555和Visual Studio 2010-LMLPHP

您的源文件夹应具有以下文件:

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**


c&#43;&#43; - Live555和Visual Studio 2010-LMLPHP
根据您的错误,看起来您的项目中包含不正确的源文件,那些未解析的引用不会出现在live555项目tar文件中的任何位置。
http://live555.com/liveMedia/public/live555-latest.tar.gz

如果此解决方案不起作用,请为以下选项卡提供项目设置的屏幕截图:
包含目录
链接器输入
项目文件夹的文件列表。

让我知道是否有帮助,如果不起作用,我们将不得不研究静态库的构建方式。我们需要查看在您的代码中的哪些地方创建了这些外部引用,并且正在做的那些引用都需要排除在外,因为它们没有出现在下面链接所引用的live555存档中。

10-08 12:00