Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Опять же, структура С++ в C#


Автор: akizelokro 30.7.2008, 13:07
Есть библиотека на С++. Какой тип строковых переменных надо использовать, чтобы потом без проблем с конвертацией использовать эту библиотеку в С#?

Автор: Любитель 30.7.2008, 13:57
А из чего выбираем, собственно говоря? smile

Автор: akizelokro 30.7.2008, 14:34
Решил ограничиться задачей передавать информацию через строковую переменную. Пока нашел несколько методов типа StringToHGlobalAnsi

Автор: Любитель 30.7.2008, 14:54
Эээ... Если у тебя обычная C-style строка (неважно, анси или юникод) не проще довериться PInvoke?

Автор: akizelokro 30.7.2008, 15:34
У меня уши пухнут, когда я бросаю взгляд на пример с PInvoke. (это я четыре дня не курю, но по крыше давит мощно). Сейчас я в состоянии, что больше трех строк кода не воспринимаю. 

Автор: akizelokro 31.7.2008, 11:31
сделал в таком виде:

функция в dll (примерная)

Код

extern "C" __declspec(dllexport) int __stdcall  MyMessage(TCHAR * chstr) {
    MessageBox(NULL, chstr, _T("Message from DLL"), MB_OK);
    TCHAR * tchstr = _T("Let's my people go");
    _tcscpy(chstr, tchstr );
    return 0;


cs файл
 
Код

       [DllImport ("C:\\job\\SimpleDLL\\debug\\simpledll.dll")]
        static extern int MyMessage(IntPtr intptr);

        static void Main(string[] args)
        {
            string str = "Опаньки!";
            IntPtr intptr = Marshal.AllocHGlobal(2048);
            Marshal.Copy(str.ToCharArray(), 0, intptr, 8);
            MyMessage(intptr);
            string ts = Marshal.PtrToStringUni(intptr);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)