Probleme mit .NET DLL
-
Hallo.
Vorneweg, ich habe gerade erst mit C# angefangen.
Also, ich wollte gleich mal ein Projekt starten und ich nutze eine C++/CLI DLL, welche zumindest bei anderen gut funktioniert.
Jedoch bekomme ich diese Runtime exception:
Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'fasmdll_managed, Version=1.0.3262.20709, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format. File name: 'fasmdll_managed, Version=1.0.3262.20709, Culture=neutral, PublicKeyToken=null'
Hier hab ich mal die DLL mit Source hochgeladen: http://filebeam.com/5e546a1b4a48f8ad5057d8ace51280d6
Falls es von Relevanz ist, ich benutze VC# 2008, erzeuge also .NET 3.5 Assemblies, habe allerdings .NET 4 Beta installiert.
Danke schonmal.
Grüße
-
Vermischt du vielleicht 32 und 64 Bit Code?
-
bkk schrieb:
Vermischt du vielleicht 32 und 64 Bit Code?
Möglich. Wo stell ich in VC# die Zielplattform ein?
-
Icematix schrieb:
bkk schrieb:
Vermischt du vielleicht 32 und 64 Bit Code?
Möglich. Wo stell ich in VC# die Zielplattform ein?
1. Rechtsklick im Solution Explorer auf das Projekt
2. Properties auswählen
3. Im erscheinenden Fenster auf Build gehen (seitlich)
4. Platform target von Any CPU auf x86 oder x64 umstellenGrüssli
-
Danke, dort habe ich es auch vermutet, aber es ist nicht da oO
Bin ich blind oder was?
http://i48.tinypic.com/wjz7sw.jpgKomme mir gerade echt blöd vor, in VC++ konnte ich die CLI-Dll problemlos auf verschiedene Plattformen umstellen.
-
Verdacht gehabt beim Bild und der hat sich bestätigt. Die Express Edition bietet keine solche Option an. Du kannst es aber manuell über das *.csproj File ändern gehen.
Irgendwo in diesem File gibt es Konfigurationsangaben. Zum Beispiel sowas für die Debug-Einstellung:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
Als Childelement von diesem Element fügst du folgendes ein:
<PlatformTarget>x86</PlatformTarget>
Wobei du eine der drei Möglichkeiten angeben kannst:
x86
x64
ItaniumWenn du das Childelement weglässt, dann nimmt es die Option "AnyCPU".
Somit könnte es zum Beispiel am Ende so aussehen:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <PlatformTarget>Itanium</PlatformTarget> </PropertyGroup>
Grüssli
-
Danke...da hat MS aber ziemlich gehackt
Naja, jetzt läufts.
-
Hallo,
die Option der Zielplattform kann Du unter
"Extras/Optionen/Projekte-und Projektmappen/Erweiterte Buildkonfigurationen anzeigen"
aktivieren und im Anschluß über die GUI konfigurieren.Gruß
foo