我在64位非託管dll中創建了一個ATL控件。64位ATL控件不適用於VC++ Forms應用程序
我想在VC++ WinForms應用程序中使用此控件。
當我運行應用程序時,我得到了badimageformatexception。
然後我創建了一個VB應用程序和一個C#應用程序。在這兩種情況下,它沒有問題。 然後我用Microsoft提供的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位。
你知道我做錯了什麼嗎?
感謝, 米哈伊
非常感謝! – Mihai