Преобразовать вызов старой DLL из vb5 в c # — System.BadImageFormatException

У меня есть старая программа, написанная на VB5. Эта программа вызывает DLL, написанную на c ++.
Я хочу сделать преобразование из VB5 в C #.
Это оригинальный код:

Декларация в VB5:

Option Explicit <br>
Private Declare Sub GENRAS _ <br>
Lib "C:\WINNT\system\genras32.dll" _ <br>
(ByVal pmarca_de_input As String, _ <br>
pcant_rasgo As Long, _ <br>
ppeso_rasgo As Long, _ <br>
ByVal ptab_rasgos As String) <br>

Звонок в VB5:

Private Sub Command1_Click() <br>
Dim pmarca_de_input As String * 201 <br>
Dim pcant_rasgo As Long <br>
Dim ppeso_rasgo As Long <br>
Dim ptab_rasgos As String * 1400 <br>
Dim sPeso As String <br>
Dim sRasgo As String <br>
Dim sBuffer As String <br>
Dim i As Integer <br>
ptab_rasgos = String(Len(ptab_rasgos), Chr(0)) <br>
pmarca_de_input = UCase(Text1.Text) <br>
Call GENRAS(pmarca_de_input, pcant_rasgo, ppeso_rasgo, ptab_rasgos) <br>

Это преобразование я пытался в C #

[DllImport(@"C:\Users\Victor Herrera\Documents\visual studio 2017\Projects\Test_1_genras\Test_1_genras\genras32.dll", CharSet = CharSet.Unicode)]
public static extern void GENRAS(string pmarca_de_input,ref long  pcant_rasgo,ref long ppeso_rasgo,ref string ptab_rasgos);

private void button1_Click(object sender, EventArgs e)
{
long pcant_rasgo=0;
long ppeso_rasgo=0;
string rasgos = "";
GENRAS("maria",ref pcant_rasgo,ref ppeso_rasgo,ref rasgos);
}

В «ppeso» я должен получить номер (пример: 195)
В «pcant» я должен получить номер (пример: 8)
В «rasgos» я должен получить строку (пример: MA; 170 | MI; 195 | AI; 190 | A; 210 |

System.BadImageFormatException: «У вас есть намерение не только запрограммировать, но и исправить». (Исключение из HRESULT: 0x8007000B) ‘
(На английском: попробуйте загрузить программу с неверным (неправильным) форматом)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]