首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将opus链接到您的visual studio项目?

如何将opus链接到您的visual studio项目?
EN

Stack Overflow用户
提问于 2014-02-22 02:15:16
回答 3查看 2.7K关注 0票数 2

我想尝试一下opus,所以我下载了opus 1.1,但是我好像不能把它和我的visual studio 2010 express项目联系起来。我尝试将opus1.1/include路径添加到properties/vc++Directoris/include目录,但链接器仍然抱怨某些函数

代码语言:javascript
复制
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...

任何帮助都会得到重视!

EN

回答 3

Stack Overflow用户

发布于 2014-04-19 18:54:09

opus1.1/win32中有一个.sln文件,用visual studio 2010打开,编译调试发布,生成.lib文件

票数 2
EN

Stack Overflow用户

发布于 2014-09-10 10:16:58

这是因为"Windows“发行版的opusfile是用mingw64编译的,并生成.a链接库,以及传统的.dll文件。因此,没有直接的方法将opusfile与Visual Studio链接起来。

这意味着,正如所提供的,您只能使用mingw64来链接到"Windows“发行版,如果您问我,这对大多数基于Windows的开发人员都没有任何好处。

"./configure && make“是如何构建UNIX风格的软件的,并且需要大量的文本处理支持工具(automake、autoconf、类似Bourne的shell等)以及通常的GCC,而不是Windows上的本机平台编译器。

正确的答案是生成.lib文件,方法是自己将发行版中的所有代码移植到Visual Studio (大量工作),或者通过从DLL生成链接库:http://support.microsoft.com/kb/131313/en-us

注意,一般来说,这是不起作用的--只有当库API是基于C的(不是基于C++的),没有不匹配的分配(在这里你做alloc,库是空闲的,反之亦然),并且生成.dll文件的编译器与Visual Studio兼容时,它才能起作用。

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

所以,在构建"windows“版本的库时,libopusfile开发人员并没有对绝大多数基于windows的开发人员提供特别的帮助。

顺便说一下:我自己在这个非常无用的SDK上遇到了问题,我解决了这些问题,并重新打包了Visual Studio的解决方案。这包括必要但未包含的其他头文件,以及从使用dumpbin找到的函数生成.lib可链接库。请注意,这还没有经过广泛的测试,但我有一个基于此的可用的opus文件回放工具:

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

这包括Visual Studio所需的头文件和.lib文件。

票数 1
EN

Stack Overflow用户

发布于 2014-02-22 04:10:52

C++库通常由头文件(用于编译器)和库文件(用于链接器)组成。您只提供了头文件,而没有提供库文件,所以链接器会报错。include路径仅用于头文件,与链接器*无关。

您下载的库可能包含一些*.lib文件。这就是链接器所需的文件。在Visual Studio中,在"VC++目录>库目录“中指定文件的目录(最好在所谓的”属性管理器“窗口中),并在项目设置中,在”链接器>输入>其他依赖项“中指定*.lib文件。

现在的困难在于:您必须确保您的项目使用构建*.lib文件时使用的相同运行时库设置进行编译。例如,如果*.lib文件是使用/MD构建的,则必须执行相同的操作。如果没有以正确的方式(为您)提供*.lib文件,那么您最终将需要自己构建该库。

*实际上,在MSVC中,您可以通过头文件进行自动链接,这是一些Boost库使用的一种技术,但现在让我们忽略这一点。

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

https://stackoverflow.com/questions/21942099

复制
相关文章

相似问题

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