【发布时间】:2011-10-21 09:52:43
【问题描述】:
我在 64 位非托管 dll 中创建了一个 ATL 控件。
我想在 VC++ WinForms 应用程序中使用这个控件。
当我运行应用程序时,我得到了 badimageformatexception。
然后我创建了一个 VB 应用程序和一个 C# 应用程序。在这两种情况下,它都可以正常工作。 然后我用微软提供的 TstCon (MFC-64bit) 测试了我的控件。控件被识别没有问题,我能够调用它的一些方法。
我无法使其工作的唯一情况是 VC++ Forms(我使用 VS 2010 pro)。
我创建了一个小测试示例。
请从这里下载:
https://rapidshare.com/files/2799321813/atl.zip
ATL 控件位于 atl_project_64 文件夹中。 它是一个简单的控件,具有 1 个属性 (Number) 和一个事件 (OnChange)。 我已经按照这里的所有步骤:http://msdn.microsoft.com/en-us/library/599w5e7x.aspx
编译项目。
然后,我创建了 2 个 WinForms 应用程序来测试控件。 C# 工作没有问题。 不要忘记添加对 Atl_project_64Lib 的引用。如果在 Com 对象列表中找不到它,可以浏览到创建 dll 的文件夹。
但是,VC++ 项目不工作。如果您尝试运行它,您将得到 badimageformatexception。当我按下设置属性值的按钮时,有时会引发错误。
都是 64 位的。
你知道我做错了什么吗?
谢谢, 米海
【问题讨论】:
标签: winforms visual-studio visual-c++ com atl