loneship 发表于 2008-1-28 15:36:58

请问怎么编译一个不需要其它dll支持的ACE.dll

我用VS2005编译的ACE.dll,总是不可避免需要msvcp80.dll和msvcr80.dll这两个dll,请问怎么可以编译出一个能够独立使用的ACE.dll?

peakzhang 发表于 2008-1-28 16:11:37

在工程的运行时库选项里面,选择静态链接 DLL,这样就会编译进去了,但是最终尺寸会变大。

loneship 发表于 2008-1-28 16:30:21

回复 #2 peakzhang 的帖子

我不清楚你是不是真的这样试验过。
不过在VS2005的工程设置里面,是没有你说的“运行时库”的“静态链接DLL”选项的。
而在MFC的使用里面,倒是有“在静态库中使用 MFC”和“在共享 DLL 中使用 MFC”的选项,而默认的ACE的工程选项是“使用标准 Windows 库”。
我不清楚你的意思是不是把选项由“使用标准 Windows 库”改成“在静态库中使用 MFC”。这个我倒是没有试过,我觉得使用标准windows库的文件会更小,而且也不会使用到MFC的dll,待会我试试看看。

peakzhang 发表于 2008-1-28 18:53:57

看图示,我没说清楚,我以为你很了解VS。默认是DLL,改成非DLL的选项。

captain_x 发表于 2008-1-29 12:55:28

用vc6不是更好?

loneship 发表于 2008-1-31 11:05:37

按照版主的说法设置/MT选项的话,程序无法通过编译……

VS我还算是比较了解,不过这些不常用的编译选项倒是很少用过。

brain_agile 发表于 2008-1-31 11:21:34

要看看什么错误。

loneship 发表于 2008-1-31 11:29:17

错误如下

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选项就是不怎么好用,很难通过编译。

loneship 发表于 2008-2-1 14:30:56

我在ACE的config.h中加入了ACE_USES_STATIC_MFC选项后,总算可以用/MT选项进行编译了,不过编译后的文件还是需要msvcp80.dll和msvcr80.dll这两个dll:(
页: [1]
查看完整版本: 请问怎么编译一个不需要其它dll支持的ACE.dll