System.EntryPointNotFoundException ruft Visual C++ DLL aus VB.NET aufC++

Programme in C++. Entwicklerforum
Anonymous
 System.EntryPointNotFoundException ruft Visual C++ DLL aus VB.NET auf

Post by Anonymous »

BEARBEITEN 5
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.cpp

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;

}
Keine Fehler beim Kompilieren des Visual C++-Codes. Habe sowohl x86 als auch x64 ausprobiert.
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))
Wenn ich es kommentiere, erhalte ich:

Code: Select all

1    0 00001000 add_code = _add_code
Von VB.NET aus versuche ich, die DLL mit diesem Code aufzurufen:
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
Und außerdem:

Code: Select all

 ' Also "CallingConvention: = CallingConvention.Cdecl
Public Shared Function add_code(ByVal lng As Integer) As Integer  'Also "_add_code"
End Function
VB Main:

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
Versucht sowohl x86 (DLL x86), x64 (DLL x64) als auch Any Cpu (beide DLL x86 oder x64).
Ich erhalte immer die Fehlermeldung:

System.EntryPointNotFoundException: Einstiegspunkt mit Name konnte nicht gefunden werden 'add_code' in MyDll.dll

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post