@vSkyD1

Как передать char указатель функции dll, чтобы можно было в дальнейшем разобрать на массив?

Здравствуйте.
Работаю в среде: C# - основной проект, C++ - библиотека.
Я буду сокращать мой код, для указания на проблему.

В чем, собственно вопрос, имеется dll на С++ с такой функцией
LaunchJavaApplet(char* JVMOptions[]){
...
	JavaVMOption *Options = new JavaVMOption[JVMOptionsCount];
	for (int i = 0; i < JVMOptionsCount; i++) {
		Options[i].optionString = (char*)(JVMOptions[i]);
	}
...
}

Библиотека не моя, я её не писал. Но её автор говорит, что нужно передать "массив указателей" в JVMOptions, чтобы поделить на строки, собственно вы это и видите в цикле. Все бы хорошо, если бы не одно НО: как мне на C# проекте передать строку ...
(
Пример:
-Xmx512m -Xms1024m
вот так должен выглядеть массив, один параметр в 1 ячейку массива, как это для указателей сделать... и чтобы потом указатели через цикл в строки поместить... хз :/
)
... в эту библиотеку, чтобы библиотека смогла поделить это на строки.

Поясню некоторые моменты:
JVMOptionsCount - тоже передается в функции, это кол-во аргументов (-Xmx512m) которые я передаю в функцию
JVMOptions - тут должен быть массив, который на шарпе будет заполнен аргументами, но как сделать массив на шарпе, чтобы он указатели.... брбрп... запутался, ужас... аааа... не проще было сделать в библиотеке сразу массив... зачем указатели то...
Вот так должен выглядеть итог цикла:
Options[0].optionString = "-Xmx512m";
Options[1].optionString = "-Xms1024m";

Надеюсь на вашу помощь, ибо, получается, мой уровень знаний указателей очень низкий для кодинга
  • Вопрос задан
  • 447 просмотров
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
[DllImport("вашалиба.dll", CharSet = Ansi, CallingConvention = CallingConvention.Cdecl)]
public void LaunchJavaApplet([In] string[] JVMOptions);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы