请问怎么编译一个不需要其它dll支持的ACE.dll
我用VS2005编译的ACE.dll,总是不可避免需要msvcp80.dll和msvcr80.dll这两个dll,请问怎么可以编译出一个能够独立使用的ACE.dll? 在工程的运行时库选项里面,选择静态链接 DLL,这样就会编译进去了,但是最终尺寸会变大。回复 #2 peakzhang 的帖子
我不清楚你是不是真的这样试验过。不过在VS2005的工程设置里面,是没有你说的“运行时库”的“静态链接DLL”选项的。
而在MFC的使用里面,倒是有“在静态库中使用 MFC”和“在共享 DLL 中使用 MFC”的选项,而默认的ACE的工程选项是“使用标准 Windows 库”。
我不清楚你的意思是不是把选项由“使用标准 Windows 库”改成“在静态库中使用 MFC”。这个我倒是没有试过,我觉得使用标准windows库的文件会更小,而且也不会使用到MFC的dll,待会我试试看看。 看图示,我没说清楚,我以为你很了解VS。默认是DLL,改成非DLL的选项。 用vc6不是更好?
按照版主的说法设置/MT选项的话,程序无法通过编译……
VS我还算是比较了解,不过这些不常用的编译选项倒是很少用过。 要看看什么错误。错误如下
1>------ 已启动生成: 项目: ACE, 配置: Release Win32 ------1>正在编译...
1>XTI_ATM_Mcast.cpp
1>C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afxver_.h(77) : fatal error C1189: #error :Please use the /MD switch for _AFXDLL builds
1>XML_Svc_Conf.cpp
1>C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afxver_.h(77) : fatal error C1189: #error :Please use the /MD switch for _AFXDLL builds
1>WIN32_Proactor.cpp
1>C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afxver_.h(77) : fatal error C1189: #error :Please use the /MD switch for _AFXDLL builds
1>WIN32_Asynch_IO.cpp
1>C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afxver_.h(77) : fatal error C1189: #error :Please use the /MD switch for _AFXDLL builds
.....
ps:我只修改了ACE这个工程的/MT选项。
我又随便建了一个MFC测试工程,反正/MT选项就是不怎么好用,很难通过编译。 我在ACE的config.h中加入了ACE_USES_STATIC_MFC选项后,总算可以用/MT选项进行编译了,不过编译后的文件还是需要msvcp80.dll和msvcr80.dll这两个dll:(
页:
[1]