User Passwort
 Passwort speichern Passwort vergessen?
 
 
 
 Alle Foren
 PDA-Dev :: Windows Mobile :: eMbedded
 C++
 Verwendung von C++ code aus C# oder VB.net

Hinweis: Sie müssen sich registrieren, um eine Antwort schreiben zu können.
Um sich zu registrieren, klicken Sie hier. Die Registrierung ist kostenlos!

Auflösung:
Benutzer:
Passwort:
Funktion:
Format: FettKursivUnterstreichenDurchstreichen Links ausrichtenZentrierenRechts ausrichten Horizontale Line Hyperlink einfügenEmail einfügenBild einfügen Code einfügenZitat einfügenListe einfügen Spoiler einfügen Infos zur Code-Formatierung
   
Nachricht:

Smilies
Achtung [!] Aufgeregt [angry] Big Smile [:D] Computer... [comp]
Durchgedreht [O] Idee [i!] Jubel [jump] Ratlos [:I?]
Schüchtern [8)] Smile [:)] Sprachlos [:O!] Traurig [:(]
Wütend [:(!] Zunge [:P] Zustimmung [^] Zwinkern [;)]

     HTML ist AUS | Forum Code ist AN
Tags:
Bereits vorhandene Tags: DllImport
Wiederholen Sie wichtige Tags oder fügen Sie neue Tags hinzu.
Trennen Sie mehrere Tags durch Kommas voneinander ab.

  Signatur anhängen.
Dieses Thema abonnieren.
    

  Übersicht  
GerhardKreuzer
Erstellt am: 30.06.2016 : 11:46:00 Uhr
Hi,
dachte wenn ich einem Beispiel folge, dann .. nein geht nicht.

Meine Dll:
.h:
#include <stdexcept>
using namespace std;

extern "C" { __declspec(dllexport) double Add (double a, double b); }

.cpp:
#include "stdafx.h"
#include "targetver.h"
#include "UnmanagedMath.h"

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}

double Add(double a, double b)
{
return a + b;
}

Compiliert, erzeugt eine dll und diese ist auch an einem Ort, an dem sie gefunden wird. Die Fehlermeldung, die kommt, wenn die dll fehlt ist eine andere. Das habe ich getestet. Also ich bin mir sicher, meine dll wird vom Programm gefunden.

Programm:
Imports System.Runtime.InteropServices

Class Program

<DllImport("Win32DllEval.dll", SetLastError:=True)>
Public Shared Function Add(a As Double, b As Double) As Double
End Function

Shared Sub Main(ByVal args() As String)
Console.WriteLine("Test: Using code in non managed Dll.")

Dim result As Double

result = Add(1.0, 2.0)
End Sub
End Class

Und nun bekomme ich eine 'NotSupported' Exception.

System.NotSupportedException was unhandled
Message=NotSupportedException
StackTrace:
at Test_Win32dll.Program.Main(String[] args)
InnerException: Unable to evaluate expression.


Ich kann aber VB.net Programme für mein Target schreiben und laufen lassen, das ist kein Problem. Ich habe auch schon Funktionen aus coredll.dll eingebunden und aufgerufen, z.B. GetTime, kein Problem, aber offenbar gelingt es mir nicht selbst eine dll zu schreiben, deren Funktionen ich importieren und aufrufen kann.

Wo klemmt's? Mir gehen die Ideen aus.

Danke für jede Hilfe.

Gruß

Gerhard



pda-dev.de

Quicklinks: Foren-Übersicht | Developer-News | Suche | Impressum

© just-works! Software

Zum Anfang der Seite

Snitz Forums 2000