Dragon  
Dragon
日历
<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 58
  • 文章 - 0
  • 评论 - 55
  • 引用 - 0

导航

常用链接

留言簿(3)

随笔分类(58)

随笔档案(58)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

    在WindowsQT默认的不支持JPGGIF等格式的图片显示。即使你编译时加了-qt-libjpeg –qt-gif等选项也未必可以显示出来(针对QT4.4以上版本的)。一般在EXE程序下将QT库下的plugins\imageformats文件夹整个COPY过去即可,但COPY imageformats文件夹到EXE同一目录后还是加载不了imageformatsdll文件,最后我碰碰运气,把Microsoft.VC90.DebugCRT.manifest, msvcp90d.dll, msvcr90d.dll文件也COPYimageformats下,运行,果然行了。虽然行了,但你运行Process Explorer看看EXE所加载的dll,它加载了两个msvcp90d.dll。最后没有用这种方法。

 

第二种方法:

另外的办法是在编译QT库之前在插件的pro文件中加入

CONFIG-=embed_manifest_dll

http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html

 

第三种方法:

还有另一种方法,这种方法是在QT库编译时没有加CONFIG-=embed_manifest_dll时用,

main函数里加入如下代码:

const char *pimgName[] = {"gif""jpeg""svg""tiff", NULL};

    
for (int i = 0; i < 5 && pimgName[i] != NULL; ++i)

    
{

       QString filename 
= QString("%1/q%2%3") . arg(QCoreApplication::applicationDirPath()) . arg(pimgName[i]) . arg("d4.dll");

       QLibrary 
*pLib = new QLibrary(filename);

       
if (pLib != NULL)

       
{

           
void *pFN = pLib->resolve("qt_plugin_instance");

           
if (pFN != NULL)

              qRegisterStaticPluginInstanceFunction ((QtPluginInstanceFunction) pFN);

           
else

              delete pLib;

       }


    }

然后把相应的DLL文件拷贝到EXE同一文件夹下,运行就可以了。


posted on 2010-08-20 13:47 Dragon 阅读(1642) 评论(0)  编辑 收藏 引用 所属分类: QT

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Dragon Powered by: 博客园 模板提供:沪江博客