为什么在使用 VS 2008 构建 DLL 时不遵循 "Use MFC in a Static Library" 设置?
Why is "Use MFC in a Static Library" setting not followed when building a DLL with VS 2008?
我的目标是创建一个 MFC/C++ DLL,它除了基本的 Win32 DLL 之外没有任何依赖项。所以我在项目属性中选择了 "Use MFC in a Static Library"
设置 -> General
-> Use of MFC
:
但是当我构建这个 DLL 并使用 Dependency Walker
检查结果时,我得到了这个:
显示对以下 MFC Dll 的依赖关系:
MFC90U.DLL
MSVCR90.DLL
MSVCP90.DLL
那么我做错了什么?
PS。我正在使用 Visual Studio 2008
我想我明白了。把我搞砸的是 C++
-> Code Generation
-> Runtime Library
中的项目设置。它已更改为 Multi-threaded DLL (/MD)
,然后将以下内容添加到 stdafx.h
文件中:
#define _AFXDLL
所以要使其静态 link 到 MFC 库,我必须将第一个设置更改为 Multi-threaded (/MT)
并注释掉第二个设置。
我的目标是创建一个 MFC/C++ DLL,它除了基本的 Win32 DLL 之外没有任何依赖项。所以我在项目属性中选择了 "Use MFC in a Static Library"
设置 -> General
-> Use of MFC
:
但是当我构建这个 DLL 并使用 Dependency Walker
检查结果时,我得到了这个:
显示对以下 MFC Dll 的依赖关系:
MFC90U.DLL
MSVCR90.DLL
MSVCP90.DLL
那么我做错了什么?
PS。我正在使用 Visual Studio 2008
我想我明白了。把我搞砸的是 C++
-> Code Generation
-> Runtime Library
中的项目设置。它已更改为 Multi-threaded DLL (/MD)
,然后将以下内容添加到 stdafx.h
文件中:
#define _AFXDLL
所以要使其静态 link 到 MFC 库,我必须将第一个设置更改为 Multi-threaded (/MT)
并注释掉第二个设置。