C++ DLL einbinde in C#

lusiphur

Mitglied
Hallo

Ich stelle mich gerade etwas dämlich an ich veruche die c++ ntive dll rgrg.dll
mit dem inhalt( strak verinachtest test modell :)
Code:
#include "stdafx.h"


extern "C" __declspec(dllexport) int testfkt()
{


		return 1;

}
in c# zu Importieren
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
 
    public class ValueWrapper
    {
        [DllImport("rgrg.dll",CallingConvention=CallingConvention.StdCall)]
        public static extern int testfkt();
    }
    class Program
    {
        static void Main(string[] args)
        {
            int go=ValueWrapper.testfkt();
            Console.WriteLine(go.ToString());
            Console.ReadKey();
        }
    }
}
Icherhalte beim Versuch die Meldung
"Es wurde versucht, eine Datei mit einem falschen Format zu laden. (Ausnahme von HRESULT: 0x8007000B)"

Was mache ich falsch oder was will er mir damit sagen?

Danke im Voraus Lusiphur
 
Hast du ein x64-Betriebssystem? Ja? Dann ist das dein Problem. Ein x64-bit-Programm kann nur eine x64-DLL laden.
Also entweder beides als x86 oder x64 kompilieren. Soweit ich weiß, muss man dem C++-Compiler explizit sagen, dass man eine x64-DLL haben will. Dem .Net-Compiler dagegen muss man sagen, dass man nur eines von beidem will. Standardmäßig erzeugt der nämlich eine Exe-Datei, die sowohl ein x86- als auch ein x64-Image beinhaltet. Die Runtime sucht dann das auf das Betriebssystem passende raus.
 

Neue Beiträge

Zurück