想用skinmagic,需要静态链接才能让exe运行时不需要skinmagic.dll,网上有个例子看不明白。。
他没有在程序里#pragma comment(lib, "skinmagic.lib") ,也没有在工程里加入链接这个lib,但他居然能正常编译运行。
我的程序里在工程里加入这个lib了,能编译,但运行时候提示需要skinmagic.dll,请教应该怎么弄。。这是网上的例子
http://aj.kofip.com/soft/temp/这个为什么可以.rar这是我的程序
http://aj.kofip.com/soft/temp/这个为什么不行.rar

解决方案 »

  1.   

    这两个项目用的不是同一个lib,可以的哪个用的lib是1MB多,不行的哪个用的lib才20多KB,显示没有包含实际功能,需要DLL是正常的。
      

  2.   

    这说明skinmagic库根本不支持静态链接,它即使提供了lib文件,也是动态链接使用的纯符号文件,没有二进制代码,静态链接用的lib是包含二进制代码的,看看lib文件大小就知道了,应该很小,最大可能只有几十K
      

  3.   

    用skinfeature。非常不错的换肤组件  http://www.skinfeature.com
      

  4.   

    多谢大家。 经过一番折腾终于搞定了。。
    几个静态链接要点:
    1 必须要把工程改成多线程的。。
    2 我链接的 SkinMagicLibMT6Trial.lib,MT6代表 多线程 exe VC6, MD6代表 多线程 dll VC6, MT7和MD7代表VC7。。
    3 会有个warning,解决方法是 工程设置->Link->Project Options 里加上 /nodefaultlib:"libcmt.lib"
    4 还需要加下面这段,否则会有link 2001错误。不知道为什么。//////  SkinMagic //////
    #pragma   warning(disable:4706)   
    #define   COMPILE_MULTIMON_STUBS   
    #include   <multimon.h>   
    #pragma   warning(default:4706)#include "SkinMagicLib.h"
    #pragma comment(lib, "SkinMagicLibMT6Trial.lib") 
    ////////////////////////