Ich habe den vorherigen Beitrag gelöscht, da der Code vollständig geändert wurde (in der Hoffnung, dass kein Regelverstoß vorliegt).
Ich habe alle vorherigen Verweise auf problematische String-Variablen entfernt.
Jetzt die Frage:
Zu Studienzwecken habe ich meine erstellt erste sehr einfache Visual C++ DLL, und ich möchte sie in VB.Net verwenden.
Zusätzlich zu den automatisch generierten Dateien von Visual C++ (dllmain.cpc, pch.h, pch.cpp, zu denen ich meine code.h hinzugefügt habe) habe ich zwei Dateien hinzugefügt, um meine Funktion zu definieren:
code.h
Code: Select all
#pragma once
#include "pch.h"
#ifndef ADD_CODE_H
#define ADD_CODE_H
//extern "C"
//{
__declspec(dllexport) int add_code(int lng);
//}
#endif
Code: Select all
#include
#include "pch.h"
#include "code.h"
int add_code(int lng) {
switch (lng) {
case 4:
return 1;
case 5:
return 2;
default:
return 9;
}
return 0;
}
Wenn ich „Extern C“ von Microsoft Dumper auskommentiere, erhalte ich Folgendes:
Code: Select all
1 0 00001000 ?add_code@@YAHH@Z = ?add_code@@YAHH@Z (int __cdecl add_code(int))
Code: Select all
1 0 00001000 add_code = _add_code
vb.net
Code: Select all
'also "?add_code@@YAHH@Z"
'Also "CallingConvention: = CallingConvention.Cdecl
Public Shared Function add_code(ByVal lng As Integer) As Integer
End Function
Code: Select all
' Also "CallingConvention: = CallingConvention.Cdecl
Public Shared Function add_code(ByVal lng As Integer) As Integer 'Also "_add_code"
End Function
Code: Select all
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim foo As Integer = add_code(4) 'Also "_add_code"
End Sub
Ich erhalte immer die Fehlermeldung:
System.EntryPointNotFoundException: Einstiegspunkt mit Name konnte nicht gefunden werden 'add_code' in MyDll.dll
Mobile version