Live555 和 Visual Studio 2010
Live555 and Visual Studio 2010
我想在 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
更新
我之前未能构建项目,因为我在为所有库创建项目时取消选中 "Precompiled header" 选项。将库链接到我的 mediaServer 项目时,VS 无法解析所有函数。
我能够通过选中 "Precompiled header" 选项重建它们并将 #include "stdafx.h"
添加到每个 *.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 编译的任何源代码都引用了删除运算符函数。我的猜测是要么你没有正确的源代码,要么你改变了它。可以粘贴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
您的解决方案文件夹应如下所示:
确保存在粗体文件。
您的源文件夹应包含以下文件:
媒体服务器:
**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
如果此解决方案不起作用,请提供以下选项卡的项目设置屏幕截图:
包括目录
链接器输入
项目文件夹的文件列表。
让我知道这是否有帮助,如果这不起作用,我们将不得不研究您的静态库是如何构建的。我们需要查看在您的代码中的哪些位置进行了这些外部引用,以及需要排除进行这些引用的原因,因为它们没有出现在下面 link 中引用的 live555 存档中。
我想在 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
更新
我之前未能构建项目,因为我在为所有库创建项目时取消选中 "Precompiled header" 选项。将库链接到我的 mediaServer 项目时,VS 无法解析所有函数。
我能够通过选中 "Precompiled header" 选项重建它们并将 #include "stdafx.h"
添加到每个 *.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 编译的任何源代码都引用了删除运算符函数。我的猜测是要么你没有正确的源代码,要么你改变了它。可以粘贴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
您的解决方案文件夹应如下所示: 确保存在粗体文件。
您的源文件夹应包含以下文件:
媒体服务器:
**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**
如果此解决方案不起作用,请提供以下选项卡的项目设置屏幕截图: 包括目录 链接器输入 项目文件夹的文件列表。
让我知道这是否有帮助,如果这不起作用,我们将不得不研究您的静态库是如何构建的。我们需要查看在您的代码中的哪些位置进行了这些外部引用,以及需要排除进行这些引用的原因,因为它们没有出现在下面 link 中引用的 live555 存档中。