VB DLL странный вывод в C # - PullRequest
       13

VB DLL странный вывод в C #

0 голосов
/ 11 августа 2011
Module Module1
    Public Declare Function GET_CALCULATION_FAN_ALONE Lib "EbmPapstFan.dll" (ByRef path As String) As Long
    Private Declare Function GET_PRODUCTS Lib "ebmpapstfan.dll" (ByRef path As String) As Long
    Public Declare Function SET_XML_PATH Lib "EbmPapstFan.dll" (ByRef path As String) As Long

    Sub Main()
        Dim Int_A As Long, Int_B As Long Str_Antwort As String, Str_Input As String
        Str_Input = "C:\Users\Sebastiaan\AppData\Local\ebmpapst\Product_selector_2011\Data\Fans\"
        Int_A = SET_XML_PATH(Str_Input)
        Int_B = GET_PRODUCTS("114709;A3G800AV0101;")

    End Sub

End Module

РЕЗУЛЬТАТЫ

Int_A = 12884901888
Int_B = 25

Как переписать этот код в C # вместо VB?

[DllImport("EbmPapstFan.dll")]
public static extern long SET_XML_PATH(String path);

[DllImport("EbmPapstFan.dll")]
static extern long GET_CALCULATION_FAN_ALONE(String fanDescription);

[DllImport("EbmPapstFan.dll")]
public static extern long GET_PRODUCTS(String fanDescription);

static void Main(string[] args)
{
    long a = SET_XML_PATH(@"C:\Users\Sebastiaan\AppData\Local\ebmpapst\Product_selector_2011\Data\Fans\");
    long b = GET_PRODUCTS("114709;A3G800AV0101;");
}

РЕЗУЛЬТАТЫ

A = 579780113483169791
B = 4294967292

Я написал этот код на C #, но вывод не тот, как это решить?

когда я изменяю long на int, результатом будет a = -1 b = 4 ....

DLL находится в Dephi, и должен давать тот же вывод

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Измените параметры string на ref string с (для соответствия ByRef) VB.Net

При вызове функций вам нужно будет передать ref строковую переменную.

0 голосов
/ 11 августа 2011

Если вы используете 4.0, вы можете попробовать это.Не уверен, но может помочь.Используйте динамическое ключевое слово.

dynamic comInterop= Activator.CreateInstance(Type.GetTypeFromProgID("MyCOM.Object.Name"));
var result = comInterop.MethodCall(parameter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...