![]() |
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|
#1 |
|
Commander
Dabei seit: Okt 2006
Ort: /etc/sudoers
Beiträge: 2.301
|
[C#] 32bit DLL auf Vista 64bit nutzen
Hi,
Ich habe mit C++ eine kleine DLL erstellt, die ich mit C# nutzen will. Jetzt das Problem: Wenn ich das ganze auf Vista 64bit mache bekomme ich immer eine System.BadImageFormatException. Unter Vista 32bit und Win XP keine Probleme. Mein Code: (C++, main.cpp) Code:
#include "main.h"
// Temp Emulator Function
int DLL_EXPORT GetTemperature()
{
return 77;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
break;
case DLL_PROCESS_DETACH:
// detach from process
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
Code:
#ifndef __MAIN_H__
#define __MAIN_H__
#include <windows.h>
/* To use this exported function of dll, include this header
* in your project.
*/
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"
{
#endif
int DLL_EXPORT GetTemperature();
#ifdef __cplusplus
}
#endif
#endif // __MAIN_H__
Abschließend noch der C#-Code Code:
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("nvista.dll")]
static extern int GetTemperature();
static void Main()
{
Console.WriteLine(GetTemperature());
Console.ReadKey();
}
}
Schonmal danke.
__________________
C# - Immer wieder lecker ![]() multiStreamRipper - Paralleles Rippen mehrerer Shoutcast-Webradio Streams |
|
|
|
| Anzeige |
|
|
#2 |
|
Lieutenant
Dabei seit: Jun 2005
Beiträge: 580
|
AW: [C#] 32bit DLL auf Vista 64bit nutzen
Ich hab mal ein bisschen geforscht und das hier gefunden: Link!
Kernaussage: Du kannst unter x64 keine x86-DLL benutzen. Du musst dein C#-Projekt einfach als 32bit-Anwendung kompilieren. Dann läuft das.
__________________
|
|
|
|
|
|
#3 |
|
Admiral
Dabei seit: Mär 2006
Beiträge: 8.735
|
AW: [C#] 32bit DLL auf Vista 64bit nutzen
Ich geh mal schwer davon aus, dass sein C#-Programm auch lediglich als 32-Bit-Programm kompiliert wurde.
(Und wenn nicht, frage ich mich, wieso man hier ein 64-Bit-Prozess benötigt) |
|
|
|
|
|
#4 |
|
Commander
Ersteller dieses Themas
Dabei seit: Okt 2006
Ort: /etc/sudoers
Beiträge: 2.301
|
AW: [C#] 32bit DLL auf Vista 64bit nutzen
Wo stellt man um ob 32/64bit compiling? (VCS08Express) Macht das einen Unterschied? Weil es läuft auf Vista 64 wohl als 64bit aber unter Vista 32 gehts auch, muss dort also als 32bit laufen.
__________________
C# - Immer wieder lecker ![]() multiStreamRipper - Paralleles Rippen mehrerer Shoutcast-Webradio Streams |
|
|
|
|
|
#5 |
|
Vice Admiral
Dabei seit: Jan 2005
Ort: D:\Thü\07318 Saalfeld Typ: Hardware-Exot
Beiträge: 6.280
|
AW: [C#] 32bit DLL auf Vista 64bit nutzen
Na Backslash, programmierst ja wirklich
![]() Mh... könntest alternativ noch 2 DLLs programmieren, eine für 64 und eine 32er. Mein Proggy würde dann beim Aufruf selbst entscheiden, welche er aufruft - abhängig davon, ob es eben unter V32 oder V64 gestartet wurde. Da meine Anwendung allerdings selbst 32-bittig ist, weiss ich nicht in wie weit sie 64er DLLs importieren kann... das Leben ist gemein ^^
__________________
"Heute morgen brach das Internet für 3 Stunden zusammen und stürzte die Nation in eine Produktivitätswelle. Der Ausfall, der zu signifikaten Arbeitsaufnahmen führte, bewirkte das sich die Anzahl von 120 Millionen amerikanischen Angestellen während der Arbeitszeit nicht mehr im Netz rumtrieben." -OnionNews ![]() |
|
|
|
|
|
#6 | |
|
Commander
Ersteller dieses Themas
Dabei seit: Okt 2006
Ort: /etc/sudoers
Beiträge: 2.301
|
AW: [C#] 32bit DLL auf Vista 64bit nutzen
Also man muss tatsächlich als x86 compilen. Die Einstellung muss man aber erstmal finden...
Die Lösung fand ich zufällig auf einer Flight Simulator Website: Zitat:
__________________
C# - Immer wieder lecker ![]() multiStreamRipper - Paralleles Rippen mehrerer Shoutcast-Webradio Streams |
|
|
|
|
|
|
#7 |
|
Admiral
Dabei seit: Mär 2006
Beiträge: 8.735
|
AW: [C#] 32bit DLL auf Vista 64bit nutzen
Naja du hättest ja auch einfach das Compilat des x86-Systems nehmen könnne...
|
|
|
|
|
|
#8 |
|
Commander
Ersteller dieses Themas
Dabei seit: Okt 2006
Ort: /etc/sudoers
Beiträge: 2.301
|
AW: [C#] 32bit DLL auf Vista 64bit nutzen
"Einfach" wohl eher nicht, hab da kein VS installiert, dann ist es wohl einfacher es umzustellen O.o
__________________
C# - Immer wieder lecker ![]() multiStreamRipper - Paralleles Rippen mehrerer Shoutcast-Webradio Streams |
|
|
|
![]() |
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|