首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Live555和Visual 2010

Live555和Visual 2010
EN

Stack Overflow用户
提问于 2016-04-13 07:24:10
回答 1查看 835关注 0票数 0

我试图在Visual 2010中编译Live555测试程序,但我无法这样做。

我编译这些库时没有任何问题。

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

但是当涉及到测试程序的时候,我什么也不能得到。下面是在mediaServer中编译文件时的编译器消息。

以前有人遇到过这个问题吗?

代码语言:javascript
复制
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无法解析所有函数。

我能够通过使用“预编译头”选项进行重新构建来使其工作,并将#include "stdafx.h"添加到每个*.cpp文件中。

事后考虑:我有一种感觉,我只需要打开mediaServer项目的“预编译头”选项。如果你试过并成功了,请告诉我。;-)

更新2

不是的。我必须打开每个静态库项目的预编译头。并将#include "stdafx.h"添加到~200个*.cpp文件中。是啊。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-15 16:10:36

更新

我看了你的垃圾堆:

代码语言:javascript
复制
1>UsageEnvironment.lib(HashTable.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)

基于第一个错误,无论您为UsageEnviroment Lib编译了什么源代码,都会引用一个delete操作符函数。我的猜测是,要么你没有正确的源代码,你改变了它。可以粘贴UsageEnvironment.hh文件内容吗?

我现在碰巧正在构建这个程序,今天早上我刚刚开始工作,根据您的要求,我编写了测试程序"mediaServer“。我们在这里根据一些假设操作,我们假设您构建的静态库是正确的。

假设静态库是正确的,这就是您想要的解决方案:

包括:

代码语言:javascript
复制
c:\Live555\BasicUsageEnvironment\include
c:\Live555\liveMedia\include
c:\Live555\UsageEnvironment\include;
c:\Live555\groupsock\include
$(IncludePath)

自选路径:

代码语言:javascript
复制
"*Insert path to your lib files here*";
$(LibraryPath)

链接器输入:

代码语言:javascript
复制
Ws2_32.lib 
groupsock.lib
BasicUsageEnvironment.lib
liveMedia.lib
UsageEnvironment.lib
libBasicUsageEnvironment.lib
libgroupsock.lib

您的解决方案文件夹应该如下所示:确保Bold中的文件在那里。

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

mediaServer:

代码语言:javascript
复制
**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归档中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36591346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档