Frage

Ich versuche, einen VC6 COM-DLL in unserer VS2010RC C # Lösung hinzuzufügen. Die DLL wurde mit den VC6 Tools kompiliert eine x86-Version zu erstellen und mit den VC 7 plattformübergreifende Tools zusammengestellt, um eine VC 7 DLL zu erzeugen.

Die x86-Version der Assembly funktioniert gut, solange das raubend C # Projekt Plattform x86 gesetzt. Es spielt keine Rolle, ob der x64 oder die x86-Version der DLL tatsächlich registriert ist. Es funktioniert mit beiden. Wenn die Plattform ‚Any CPU‘ gesetzt ist erhalte ich eine BadImageFormatException auf der Last des Interop.<name>.dll.

Wie für die x64-Version, ich kann nicht einmal das Projekt zu erstellen erhalten. Ich erhalte die tlbimp Fehler:

  

TlbImp: error TI0000: Ein einziger gültiger Maschinentyp kompatibel mit der   input type Bibliothek muss angegeben werden.

Hat jemand dieses Problem gesehen?

EDIT:

Ich habe viel mehr getan, um dieses Problem zu graben in und denke, das ist ein Visual Studio Fehler sein kann. Ich habe eine saubere Lösung. Ich bringe in meinem COM Montage mit sprachunabhängig ‚Any CPU‘ ausgewählt. Die Prozessarchitektur des resultierenden Interop DLL ist x86 statt MSIL.

Auch die Interop von Hand jetzt machen müssen, um diese an die Arbeit machen.

Wenn jemand einen anderen Vorschlag hat lassen Sie mich wissen.

War es hilfreich?

Lösung

‚(Konfiguration) | Jede CPU‘

Dieses Problem kann durch das Öffnen der Datei Csproj und das Hinzufügen von dem folgenden Knoten zu einem der Knoten gelöst werden, dass es fehlen:

<PlatformTarget>AnyCPU</PlatformTarget>

Wenn dieser Knoten nicht vorhanden ist TlbImp wird auf x86 und Ursache Probleme Standard.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top