为什么我的应用程序为一个函数搜索错误的dll? -- c++ 领域 和 visual-studio-2010 领域 和 dll 领域 和 linker 领域 相关 的问题

Why is my application searching the wrong DLL for a function?


简体版||繁體版
0
vote

问题

中文

我正在使用Visual Studio 2010编写Qt应用程序。我的应用程序'Review.exe'与 QtAV.dll 使用 QtAV.lib 进行链接。反过来,qtav与ffmpeg,portaudio,gdiplus等。

调试版本正确工作。

当我尝试运行发布版本时,我得到: 过程入口点 GdipAlloc 无法位于动态链接库中 avcodec-54.dll

GdipAlloc Gdiplus 的一部分。为什么要搜索的错误DLL是函数?这只发生在发布版本中。

如果我替换 QtAV.dll 的发布版本 QtAV.dll ,则审查的发布版本将加载 QtAV.dll 。

设置链接器标志 /DEBUG 在发布构建上会导致问题消失。但是我想弄清楚原因和一个适当的解决方案。

英文原文

I am writing a Qt Application using Visual Studio 2010. My application 'Review.exe' links against QtAV.dll using QtAV.lib. In turn, QtAV links against ffmpeg, portaudio, gdiplus, etc.

The debug version works correctly.

When I try and run the release version I get: The procedure entry point GdipAlloc could not be located in the dynamic link library avcodec-54.dll.

GdipAlloc is a part of Gdiplus. Why is the wrong dll being searched for the function? This only happens in the release build.

If I replace the release version of QtAV.dll with the debug version of QtAV.dll, the release version of Review will load the debug version of QtAV.dll.

Setting the linker flag /DEBUG on the release build causes the problem to go away. However I'd like to figure out the cause and a proper solution.

           
 
 

回答列表

0
 
vote

我发现它确实发生在VS2010。 VS2012工作正常。我再次编译portaudio(使用cmake很容易),并通过vs2010工具生成ffmpeg .lib文件,然后再次编译qtav,这个错误消失了! 我上传了新的开发文件来构建QTAV。下载ffmpeg-2.0.1_mingw32 + msvc.7z和portaudio-v19_msvc2010x86_20130813.7z在这里: https:// sourceforge .NET /项目/ QTAV /文件/依赖于

:)

 

I find that it does happens for vs2010. vs2012 works fine. I compile portaudio by vs2010 again(use cmake is quite easy), and generate FFmpeg .lib files by vs2010 tools, then compile QtAV again, this errors disappears! I have uploaded new development files to build QtAV. Download FFmpeg-2.0.1_mingw32+msvc.7z and portaudio-v19_msvc2010x86_20130813.7z here: https://sourceforge.net/projects/qtav/files/depends

: )

 
 

相关问题

0  MPIR GCC编译 - 找不到-LMPIR  ( Mpir gcc compilation cannot find lmpir ) 
我正在尝试使用GCC使用MPIR在我的Windows 7计算机上使用MPIR编译一个简单的C程序。我成功安装了MPIR(我猜)使用配置,制作,进行检查和制作(未使用"sudo" - 这是什么?)。 程序被称为"mytest.cpp" ,位于MPIR的顶部文件夹中,即C:/mpir/mpir-2.7.0/,也在其中"...

3  ld错误的象征  ( Ld wrong symbol ) 
我用boost.python库建立了应用程序。我想链接它。这是代码: #include <boost/python.hpp> using namespace boost::python; // Boost.python definitions to expose classes to Python BOOST_...

0  链接C ++文件  ( Linking c files ) 
我有一个包含函数声明的头文件,让我们调用它A.h,我在文件A1.cpp中实现了此函数。现在A1.CPP包含其他文件。并非所有包含在A1.cpp中的文件可用(第三方问题)。现在我的问题是,可以从文件中制作函数调用让我们说main.cpp,动态链接到a1.cpp(不编译a1.cpp),因为我有第三方的某些文件不可用? 我...

1  重新排序GNU Autotools链接器标志  ( Reordering gnu autotools linker flags ) 
我在c ++中使用gnu autotools使用我的项目(Autotools Config由Eclipse CDT自动生成,但这无关紧要)。我现在正在使用llvm libs,现在我面临着链接器标志的顺序的问题。 基本上,在构建项目时,Eclipse执行"make" 。执行很多命令,但最后它执行g ++编译器,如下所...

3  LD:找不到框架 - 框架错误  ( Ld framework not found framework error ) 
每次尝试构建我的项目时,我始终如一地收到此错误: ld: framework not found -framework clang: error: linker command failed with exit code 1 (use -v to see invocation) 我甚至不知道什么框架被称为 ...

1  如何在Qt应用程序中使用Qt 4插件或自发插件?  ( How to use a qt 4 plugin or self developed plugin in qt application ) 
我正在尝试为日历进行简单的应用程序,它似乎并没有正确链接。 平台:WinXP,Qt:4.5.3与Mingw 应用程序正在尝试使用C: QT 4.5.3 Plugins Designer的Prevented Qt插件"WorldtimeClockPlugin" 。我在对话框上拖动并丢弃了Qt Designer中...

16  extern inline函数会发生什么?  ( What happens with an extern inline function ) 
如果我将.h文件中的函数定义为,则会发生什么 extern int returnaint(void); 在相关的.c文件中定义它作为 inline int returnaint(void) { return 1; } 并在另一个.c文件中包含标题并使用该功能?当我编译分页的东西时,为每个....

2  环境覆盖Linux链接器/加载器  ( Environment overrides for linux linker loader ) 
今天早些时候我问了一个问题关于 Environ ,以及其中一个更多有趣的回复建议我可以使用ld_debug收集信息。 现在我已知一些链接器/加载程序环境变量(例如 LD_PRELOAD )一段时间,但这对我来说是新的。 googling,我找到了一个特定于Linux特定的男人页面环境变量所用链接器/加载器,包括LD_...

2  静态链接的库未在内部运行代码到设置静态变量  ( Statically linked libraries not running code inside to setup static variables ) 
在一个c ++项目中我正在处理,我有一个简单的c ++文件,需要在程序执行开始时运行一些代码。此文件链接到静态库中,然后链接到主程序中。 我在运行正常的其他文件中有类似的代码,看起来像: bool ____nonexistent_value = executeAction(); 但是,除非我使用此文件中实现...

6  减少Windows可执行大小  ( Reduce windows executable size ) 
我在windows上有一个c ++ / mfc应用程序 - 动态链接它只有60kb静态它是&gt; 3MB。 它是通过电子邮件向客户分发给客户,因此需要尽可能小。 它静态链接MFC和MSCVRT库 - 因为它是一些问题的修复,我不希望更多的支持呼叫关于丢失的Libs - 特别是非常有用的"应用程序配置" 一个! ...

8  iPhone设备3.0静态库中的类别  ( Categories in static library for iphone device 3 0 ) 
我在静态库中有类别。任何应用程序开发人员都应该将-objc标志设置为"其他链接器标志" 以正确使用我的静态库。它适用于iPhone设备/ iPhone Simulator 2.x和iPhone模拟器3.0。但它崩溃了iPhone设备3.0。正如写入在本文中它是新的链接器错误。他们建议使用一个更多链接器标志:-all_...

1  在Mac OS X上链接关机依赖关系的问题  ( Linking issue with indirect dependencies on mac os x ) 
我们有一些链接与间接依赖关系的问题。猜测我在网上读取的内容可能是因为两个级别的命名空间使用。 当我们联系到Boost库中,Boost_FileSystem将精确地恰好,这本身取决于Boost_System。链接器无法在Boost_filesystem和Boost_System之间解析依赖关系。 有人可以给我一些提示如...

3  奇怪的MFC / VC ++链接器错误(STD ::列表<CRect>已定义)  ( Strange mfc vc linker error stdlistcrect already defined ) 
我有一个非常奇怪的错误消息,只有在我将以下行添加到我的项目时才会发生: std::list<CRect> myVar; 值得注意的是,它不一定是std ::列表,它可以是std ::矢量或我假设的任何其他stl容器。 这是错误消息: 错误1错误lnk2005:"公共: __thiscall std :...

2  Boost程序无法在Linux上工作  ( Boost program will not working on linux ) 
我有这个程序,它使用Boost :: Asio进行套接字。我几乎改变了提升例子的一些代码。程序编译并运行,就像在VS中的Windows上一样运行但是,当我在Linux上编译程序并运行它时,我得到一个分段错误。 我发布了代码这里 我用来编译的命令是: c++ -I/appl/htopopt/Linux_x86_6...

5  针对ARMv7时,Xcode链接错误  ( Xcode linking error when targeting armv7 ) 
我已经花了数小时令人困惑的是,利用谷歌搜索和其他堆栈溢出问题无济于事。 我有一个iPhone / iPad通用应用程序,当目标是ARMv6时,似乎编译得很好。但是,当设备是iPad时,我得到此警告: 警告:SDK Device - iPhone OS 3.2'的建筑需要ARMv7架构。 奇怪的是,尽管有这个警...

11  如何使CMake Append Linker标志而不是预先完成它们?  ( How to make cmake append linker flags instead of prepending them ) 
cmake似乎在gcc编译命令的前面添加了链接器标志,而不是在最后附加它。如何使CMake附加链接器标志? 这里是重现问题的简单示例。 考虑使用 clock_gettime :的C ++代码 // main.cpp #include <iostream> #include <time.h> int main(...

1  lnk2001使用extern int错误  ( Lnk2001 error using extern int ) 
我有这个简单的例子,我无法让它编译: 三个文件: my.h , my.cpp ,以及使用.cpp : //my.h extern int foo; void print_foo(); void print(int); //my.cpp #include "my.h" #include "../../s...

0  为什么我的参数通过引用传递给函数内未修改?  ( Why is my parameter passed by reference not modified within the function ) 
我在静态库中有一个c函数,让我们调用它,使用以下界面: int A(unsigned int a, unsigned long long b, unsigned int *y, unsigned char *z); 此函数将改变y的值(这是肯定的)。我使用它在动态C ++库中使用Extern"C" 。 现在...

6  链接到Boost Libraries因Lib前缀而失败  ( Linking to boost libraries fails because of lib prefix ) 
我从BoostPro安装了Boost V1.47 DLL(MT,Debug)。我的代码 #include 's <boost/regex.hpp> 。当我尝试构建时,VC给了我 LNK1104 cannot open file libboost_regex-vc90-mt-gd-1_47.lib ,即使 boost...

3  为什么Matlab无法导入这个Python库?  ( Why cant matlab import this python library ) 
我想使用 http://www.losonczylab.org/sima/1.2/ < / a>在matlab中。 我可以从python运行它。 我可以导入matlab中的示例依赖关系。 $ /opt/local/bin/python Python 2.7.9 (default, Dec 13 2014, 15...

1  覆盖运营商时的友谊问题<<  ( Friendship problems when overriding operator ) 
我正在尝试以标准方式重载 operator<< 。我有一个称为符号表达的类,驻留在一个名为symboltable的文件中.h如下: namespace Compaler // It's a pun; don't ask { class SymbolTable { public: // ... frien...

19  将LLVM JIT代码链接到外部C ++函数  ( Linking llvm jit code to external c functions ) 
我正在编写一个LLVM脚本引擎,JIT以自定义语言编译脚本代码。我的问题是我无法调用外部函数(即使是C99 ERF()函数也会发生故障)。 例如,如果我extern"c" ERF函数, extern "C" double erft(double x){ return erf(x); } 并使用外部链接创建函...

2  xmpp客户端库gloox - 链接器找不到符号  ( Xmpp client library gloox linker cannot find symbol ) 
我完全困难了这个问题,不能真正弄清楚如何解决这个问题。 基本上,我编译了 gloox 图书馆在Visual Studio 2010中(用小调整工作完全没问题)并有一个.lib和.dll文件。我现在在一个不同的程序中尝试使用它,它使用很多Gloox功能。除了一个:之外,我能够将大多数符号链接到罚款。 1>test...

3  致命错误C1900:“P1”版本'20060201'和'P2'版本'20050411'之间的IL不匹配  ( Fatal error c1900 il mismatch between p1 version 20060201 and p2 version ) 
我用Visual Studio 2005 Express版本编译我的项目,并获得此链接错误。任何人都可以建议如何解决这个问题? ...

1  我正在为我的C ++项目添加offocial的SQLite源代码并获得链接器错误  ( I was adding offocial sqlite source code to my c project and gets a linker err ) 
如何引用我的C ++项目中的哪种链接错误?我唯一想到的是Sqlite3标题是项目的一部分。 array( array( 'chapter' => 'Chapter 1', 'question' => 'Question 1', 'answer' => 'An...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有