[ActiveX, VS2008] AxHost Error op XP 64Bit

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een ActiveX control geschreven in C++.
Ik compileer deze voor 32Bit en 64Bit.
Als ik een nieuwe VS2008 Solution maak en ik leg een referentie naar die OCX dan krijg ik een control in mijn toolbar. Vervolgens kan ik deze control plaatsen op mijn form.
Ondertussen maakt VS2008 twee extra dlls aan: Interop...dll en een AxHost....dll

Als ik bovenstaande doe op een 64Bit XP machine en ik maak een 64Bit applicatie, krijg ik een foutmelding als ik de control op mijn form plaats. De twee extra dlls worden wel gemaakt, maar de control wordt niet geplaatst.
De foutmelding is:
code:
1
2
3
4
Failed to create component 'AxHost'. The error message follows:
'System.BadImageFormatException: A wrapper assembly is not registered for this type library.
  at System.Windows.Form.Design.DocumentDesigner.AxToolboxItem.CreateComponentsCore(IDesignerHost host)
...


Uiteraard heb ik op mijn 64Bit XP machine de 64Bit versie van de OCX geregistreerd.

Graag enig advies.

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:27
Ik denk dat je even handmatig de 64bit dll's aan moet maken.

Visual Studio roept waarschijnlijk standaard de 32bit variant aan.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank je. Ik ga dat vanavond gelijk uitproberen.
Zou wel een beetje suf zijn van VS2008 dat als je een 64Bit OCX in een 64Bit applicatie wilt gebruiken dat dan de 32Bit versie van aximp wordt aangeroepen.

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:27
Och, er zitten wel meer suffe dingen in Visual Studio als je 64bits applicaties ontwikkeld. De grootste is dat er geen Edit en Continue support is voor 64bits applicaties :S 8)7

Daarnaast zit er een dikke bug in de Helpprovider van Microsoft waarbij de help tegen de linker rand van het scherm getoond wordt in 64bits applicaties, bij x86 apps werkt de helpprovider wel goed.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het volgende geprobeerd op de command prompt:
code:
1
>"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\aximp" mapwingis.ocx /out:AxInterop.MapWinGIS.dll

Dat gaf me een AxInterop.MapWinGIS.dll en een MapWinGIS.dll die ik hernoemt heb naar Interop.MapWinGIS.dll.
Als ik deze twee dlls open in DependancyWalker open, zie ik dat alle referenties x64 zijn behalve de dlls zelf, die zijn nog steeds 32Bit.
Als ik de ocx in DependancyWalker zie ik dat alles x64 is, wel krijg ik een melding dat ik 4 dlls mis:
MSVCR90.DLL
IESHIMS.DLL
MSVCP90.DLL
WER.DLL
Ik weet niet of dat relevant is.

Als ik een nieuwe Windows forms applicatie maak en een referentie leg naar deze twee interop dlls, dus niet naar de ocx dan krijg ik bij het plaatsen van de control nog steeds dezelfde foutmelding en worden er twee nieuwe referenties gelegd:
\WindowsFormsApplication1\bin\x64\Release\AxInterop.MapWinGIS.dll
\WindowsFormsApplication1\bin\x64\Release\Interop.MapWinGIS.dll

Bij de ocx hoort ook een exe, gemaakt ik VB.NET en C#. Als ik die start met de via AxImp gegenereerde dlls krijg ik allemaal foutmeldingen over 'missing methods' als ik de twee door VS gegenereerde dlls (uit \WindowsFormsApplication1\bin\x64\Release\) in mijn bin folder kopieer, start mijn exe weer als vanouds.

Dus de MapWindow applicatie werkt wel, alleen het plaatsen van de control op een eigen form gaat fout.

Ik doe dus nog steeds wat fout, maar ik weet niet wat.

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:27

Hail to the king baby!

Pagina: 1