2014-02-21 55 views
2

我想玩opus一些,所以我下载了opus 1.1但是它好像我不能真正将它链接到我的visual studio 2010 express项目。我尝试添加了opus1.1/include路径属性/ VC++ Directoris/include目录,但链接仍然抱怨 一些功能如何将opus链接到您的visual studio项目?

error LNK2019: unresolved external symbol _opus_decoder_create referenced in function ... 
error LNK2019: unresolved external symbol _opus_decoder_destroy referenced in function... 
error LNK2019: unresolved external symbol _opus_encoder_destroy referenced in function... 
error LNK2019: unresolved external symbol _opus_encoder_ctl referenced in function... 
error LNK2019: unresolved external symbol _opus_encode referenced in function... 
error LNK2019: unresolved external symbol _opus_decode referenced in function... 

任何帮助将appriciated!

回答

0

C++库通常由头文件(用于编译器)和库文件(用于链接器)组成。你只提供头文件,但没有库文件,所以链接器抱怨。包含路径仅用于头文件,与链接器[*]无关。

您下载的库可能包含一些* .lib文件。这是链接器所需的文件。在Visual Studio中,在“VC++目录>库目录”(最好在所谓的“Property Manager”窗口)中指定文件的目录,并在项目设置中指定* .lib文件,位于“Linker> Input>附加依赖性“。

现在遇到了困难:您必须确保您的项目是使用与* .lib文件构建时相同的运行时库设置进行编译的。例如,如果* .lib文件是使用/ MD构建的,那么您必须执行相同的操作。如果* .lib文件没有以正确的方式提供,那么你最终会想自己构建库。实际上,在MSVC中,你可以通过头文件进行自动链接,这是一些Boost库使用的技术,但现在让我们忽略它。

+0

这是最奇怪的部分,我真的找不到任何lib文件夹或lib文件。现在发现一个自述,它最高审计机关: “==编译libopus ==为了从分布压缩包建,你只需要做到以下几点: %的./configure %使 ” 真的不知道该怎么办 –

+0

此答案对此问题没有帮助,因为不,opusfile库不包含.lib文件。 –

1

有一个在opus1.1/win32的一个.sln文件,在Visual Studio 2010中打开它,并编译调试和发布,那么它会创建.lib文件

+0

它没有DLL,因为没有DLL导出。一旦我添加了_declspec,它就完成了。 –

0

的原因是,“视窗”分布opusfile是使用mingw64编译的,并生成.a链接库以及传统的.dll文件。因此,没有直接的方法将opusfile与Visual Studio相关联。

这意味着,就像提供的那样,你只能使用mingw64来链接“Windows”发行版,如果你问我,它不会对大多数基于Windows的开发者有利。

“的./configure & &使”你是怎么建UNIX风格的软件,并且需要大量一套文本处理支持工具(的automake,autoconf的,是Bourne像贝壳等),以及,通常情况下, GCC,而不是Windows上的平台本地编译器。

正确的答案是生成.lib文件,或者通过移植的所有代码在分发到Visual Studio你自己(很多工作),或通过从生成的DLL链接库:http://support.microsoft.com/kb/131313/en-us

注意,一般来说,这是行不通的 - 只有在库API是基于C的(而不是基于C++的)并且没有错误匹配的分配(你在哪里分配,而库是否是空闲的,反之亦然) )以及生成.dll文件的编译器是否与Visual Studio ABI兼容。

您还可以通过生成带有空实现的“存根”库并使用该库中的.lib来生成可链接的库,或者可以使用LoadLibrary()和GetProcAddress()进行动态加载。

所以,是的,libopusfile开发人员在构建库的“windows”版本时并不会对绝大多数基于Windows的开发人员特别有帮助。

顺便说一句:我自己有这个无用的SDK的问题,我解决了它们,并重新打包了Visual Studio的解决方案。这包括额外的头文件,这些头文件是必需的但不包括在内,以及从使用dumpbin找到的函数生成.lib可链接库。请注意,这还没有被广泛的测试,但我必须在此基础上进行工作OPUS文件播放工具:

http://www.enchantedage.com/opusfile-0.6-for-visual-studio

这包括报头,需要的Visual Studio的.lib文件。

相关问题