Я удалил предыдущее сообщение, так как код был полностью изменен (надеюсь, что это не нарушает правил).
Я удалил все предыдущие ссылки на проблемные строковые переменные.
Теперь вопрос:
В учебных целях я сделал моя первая очень простая DLL Visual C++, и я хочу использовать ее в VB.Net.
В дополнение к автоматически сгенерированным файлам из Visual C++ (dllmain.cpc, pch.h, pch.cpp, к которым я добавил свой code.h) я добавил два файла для определения моей функции:
code.h
Код: Выделить всё
#pragma once
#include "pch.h"
#ifndef ADD_CODE_H
#define ADD_CODE_H
//extern "C"
//{
__declspec(dllexport) int add_code(int lng);
//}
#endif
Код: Выделить всё
#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;
}
Если я раскомментирую «Extern C» от Microsoft Dumper, я получу:
Код: Выделить всё
1 0 00001000 ?add_code@@YAHH@Z = ?add_code@@YAHH@Z (int __cdecl add_code(int))
Код: Выделить всё
1 0 00001000 add_code = _add_code
vb.net
Код: Выделить всё
'also "?add_code@@YAHH@Z"
'Also "CallingConvention: = CallingConvention.Cdecl
Public Shared Function add_code(ByVal lng As Integer) As Integer
End Function
Код: Выделить всё
' Also "CallingConvention: = CallingConvention.Cdecl
Public Shared Function add_code(ByVal lng As Integer) As Integer 'Also "_add_code"
End Function
Код: Выделить всё
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
Я всегда получаю сообщение об ошибке:
System.EntryPointNotFoundException: не удалось найти точку входа с именем «add_code» в MyDll.dll
Подробнее здесь: https://stackoverflow.com/questions/797 ... rom-vb-net
Мобильная версия