tgb信誉分变化记录
 
删除帖子 2004-6-28  17:21:22 
删除贴子,扣除信誉分5分。作者:tgb贴文时间:Jun  28  2004    4:52PM标题:【200分】----探讨一个静态编译的问题,请亲自实践过的发言,不欢迎没有实践就乱发言的所谓高等级用户!!!内容:还是SKinMagic2.0b1版本  
 
 
以下是它的Lib文件和DLL说明    
 
===============  
Visual  C++  6.0  
===============  
SkinMagicLibMT6Trial.lib              For  Visual  C++  6.0  link  with  multithreaded  run-time  library.  
SkinMagicLibMD6Trial.lib              For  Visual  C++  6.0  link  with  multithreaded  DLL  run-time  library.  
 
 
 
===============  
DLL  
===============  
SkinMagicTrial.lib                          Import  library  of  SkinMagicTrial.dll  
 
 
我在我的程序中如果使用它的dll的话,必须连接它的  SkinMagicTrial.lib  
但是我如何才能连接它的静态库呢?  看它的说明,似乎最上面的两个lib文件是给静态连接用的.  
 
我试了以下,以下是结果:  
 
A:EXE(Share    MFC  )+SkinMagic(动态DLL方式连接)        需要连接    SkinMagicTrial.lib,运行的时候需要  SkinMagicTrial.dll  
B:EXE(Static  MFC  )+SkinMagic(静态Lib方式连接)        需要连接    SkinMagicLibMT6Trial.lib,运行的时候不需要SkinMagic的任何组件  
C:EXE(Share    MFC  )+SkinMagic(静态Lib方式连接)        需要连接    SkinMagicLibMD6Trial.lib,运行的时候不需要SkinMagic的任何组件  
D:EXE(Static  MFC  )+SkinMagic(动态DLL方式连接)        需要连接    SkinMagicTrial.lib,运行的时候需要  SkinMagicTrial.dll  
 
但是我在试验【C】的情况下,出现了以下错误  
==============================================================================================================  
msvcrtd.lib(cinitexe.obj)  :  warning  LNK4098:  defaultlib    "msvcrt.lib  "  conflicts  with  use  of  other  libs;  use  /NODEFAULTLIB:library  
SkinMagicLibMD6Trial.lib(MultiMonitor.obj)  :  error  LNK2001:  unresolved  external  symbol  _xEnumDisplayMonitors@16  
SkinMagicLibMD6Trial.lib(MultiMonitor.obj)  :  error  LNK2001:  unresolved  external  symbol  _xGetMonitorInfo@8  
SkinMagicLibMD6Trial.lib(MultiMonitor.obj)  :  error  LNK2001:  unresolved  external  symbol  _xMonitorFromWindow@8  
SkinMagicLibMD6Trial.lib(MultiMonitor.obj)  :  error  LNK2001:  unresolved  external  symbol  _xMonitorFromPoint@12  
SkinMagicLibMD6Trial.lib(MultiMonitor.obj)  :  error  LNK2001:  unresolved  external  symbol  _xMonitorFromRect@8  
Debug/test.exe  :  fatal  error  LNK1120:  5  unresolved  externals  
==============================================================================================================  
 
请问我该如何在使用ShareMFC的情况下静态连接它的Lib???  
是它的Lib文件提供错误了吗?  
                                                   
 
 
BTW:  
另外,那几个函数是在user32.lib中,我手工连接user32.lib也没有作用,请指教!论坛:5001  

解决方案 »

  1.   

    手工链接那几个函数的方法为在实现文件的头部加入以下内容:
    #pragma warning(disable:4706)
    #define COMPILE_MULTIMON_STUBS
    #include <multimon.h>
    #pragma warning(default:4706)
      

  2.   

    faint,俺的帖子不知道被哪个垃圾版主删除了,靠,自己没有动手实践就来大放厥词,还不让别人指责???什么玩意
      

  3.   

    回复人: needways(needways) ( ) 信誉:100 
    多谢!!!!全给你,验证成功!!!!
    我的QQ14322807,有空多聊聊!!
      

  4.   

    为什么要在实现文件添加?
    我为什么stdafx.h中添加不行???==================
    #ifdef _AFXDLL//Dll
    #define _CJX_COMMENT "SkinMagicLibMD6Trial.lib"
    #define _CJX_MESSAGE "SkinMagic will automatically link with SkinMagicTrial.dll"
    #pragma warning(disable:4706)
    #define COMPILE_MULTIMON_STUBS
    #include <multimon.h>
    #pragma warning(default:4706)
    #else//Static
    #define _CJX_COMMENT "SkinMagicLibMT6Trial.lib"
    #define _CJX_MESSAGE "SkinMagicLibMT6Trial will automatically link with SkinMagicLibMT6Trial.lib"
    #endif // 
    //*/
    #pragma comment(lib, _CJX_COMMENT) 
    #pragma message(_CJX_MESSAGE)
      

  5.   

    在 stdafx.h 中定义,会造成重复定义。因为在 multimon.h 中有实现代码。
      

  6.   

    “并且我连接成功,但是运行的时候出错!”
    是在放在 stdafx.h 中还是指实现文件中?