c++ - 即使选择了指向 ATL 的静态链接,Atl71.dll 依赖性仍然存在

标签 c++ winapi activex atl static-libraries

我已经花了一整天的时间来解决这个问题,但还没有运气。在我的项目中,我在 General 属性页上将 Use of ATL 属性设置为 Static Link to ATL 并设置了 Runtime 代码生成 属性页(C/C++ 文件夹)上的库 属性到多线程(/MT)。然而 DependencyWalker 仍然显示 Atl71.dll 依赖。

我用谷歌搜索并找到了这个页面 http://www.eggheadcafe.com/forumarchives/vcatl/Mar2006/post26077463.asp解决方案是在 atlbase.h 之后添加 atlwin.h。该解决方案确实有助于减少对 atl71.dll 的依赖。然而,它引入了一个新问题,即 CreateWindow 无法正常工作。

  // Creates the Web Browser control and navigates to the 
  // specified web page.
  HWND hWnd = ::CreateWindow("AtlAxWin", "http://www.microsoft.com", 
     WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, hParent, NULL,
     ::GetModuleHandle(NULL), NULL);

hwnd 为 NULL。

所以添加atlwin.h的解决方案不能用了,不知道有没有人遇到过类似的静态链接问题?如何解决?

环境:VS 2003 .Net

谢谢!

最佳答案

我在从 Visual Studio 6 升级到 2005 时发现了类似的问题。解决方法是在窗口类名称中包含版本号,所以在我的例子中它看起来像这样:

hwndControl = ::CreateWindow("AtlAxWin80", ...);

因此对于 Visual Studio 2003,您可能会发现:

hwndControl = ::CreateWindow("AtlAxWin71", ...);

有效。

(在更基本的层面上,您是在调用 AtlAxWinInit() 吗?)

关于c++ - 即使选择了指向 ATL 的静态链接,Atl71.dll 依赖性仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1270687/

相关文章:

c++ - 数据包延迟变化 (PDV)

c++ - HALCON 到 OpenCV 失真系数转换

c++ - 可用的 Visual Studio 2008 c++ 项目平台的优缺点?

c++ - Windows Phone 8 上的当前语言环境

delphi - 正确处理模态窗口 "Minimize"行为

css - 好的旧重叠菜单,如何对 activeX 进行 z-index

visual-studio-2008 - 如何将 MFC ActiveX 控件添加到现有的 Activex 项目

c++ - 通过迭代旋转重新排序算法

c++ - 使用轮询的套接字响应超时

javascript - 使用 javascript 设置页面加载时的输入值