2013-12-18 2 views
0

Я вызываю функцию экспорта C, которая не позволяет мне использовать параметры!Как отправить параметр __arglist в другую функцию в C#?

Код:

public static void CallIt1(string Format, __arglist) 
    { 
     //Processing Data 

    } 

    public static void CallIt2(__arglist) 
    { 
     CallIt1("myform", ?); 

    } 

Мне нужно отправить все параметры, которые направляются CallIt2 в другую функцию CallIt1.
C# не позволяет мне объявлять переменную __arglist.
Любая идея, как сделать CallIt1("myform", Call2ARGS);?

+0

Используйте 'PARAMS объект [] args' вместо' __arglist' , –

+1

@ AlessandroD'Andria Я вызываю функцию экспорта C и не могу перейти с параметрами –

+1

Это дословный код? Отправьте оператор import _exact_ и, возможно, точную 'C'. Поскольку я читал это сейчас, это должно быть просто 'int __arglist'. –

ответ

0

как вы делаете маршалинг между неуправляемой и управляемой средой, вы должны объявить функцию в C# как это:

[DllImport(my_C_dll, CallingConvention=CallingConvention.Cdecl)] 
static extern void print_string_array([In] string[] str_array, IntPtr length); 

Как написано, код C, казался бы использовать Cdecl соглашение о вызовах. Поэтому вам может потребоваться совпадение с C#. Я подозреваю, что это основная проблема, с которой вы сталкиваетесь. пожалуйста, попробуйте взглянуть на эту tutorial первый

+0

@Mgetz Я думаю, было бы лучше, если бы пост OP немного больше деталей, если это возможно –

+1

Спасибо, но это не моя проблема, я просто хочу отправить __arglist из одного funcion в другой внутри C#, который не имеет ничего общего с C++ часть в этом вопросе. –

+0

Да, даже если вы используете C#, чтобы общаться между C/C++-функциями, вам все равно нужно сортировать –

2

Если вы хотите позвонить в C# (не понятно мне) можно попробовать:

public static void CallIt1(string Format, ArgIterator iterator) 
{ 
    //Processing Data 
} 

public static void CallIt2(__arglist) 
{ 
    CallIt1("myform", new ArgIterator(__arglist)); 
} 
+0

Спасибо, Есть ли способ конвертировать ArgIterator обратно в __arglist? –

Смежные вопросы