powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение библиотеки .dll на C++ в проект C#
17 сообщений из 42, страница 2 из 2
Подключение библиотеки .dll на C++ в проект C#
    #38879847
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, создал у себя новые конфигурации 32 и 64. на 32 вроде работает. Тока вот вопрос остался на счёт структур. Я создал класс для работы с библиотекой, хотел бы чтобы указали на ошибки.
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38879861
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да забыл к библиотеке идет "Руководство программиста" приложить не удалось поскольку размер большой, но его можно скачать на сайте
пробую, некоторые функции не работают. приложение просто закрывается, я подозреваю что я неправильно импортировал функции передаваемые параметры, не те типы. подскажите какие надо.
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38880794
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался я со структурами, вопрос тока остался с указателями. есть функция, которая пишет в строку
Код: plaintext
1.
void CiStrError(short int cierrno, char *buf, short int n)

как передать *buf.
делаю я так
Код: c#
1.
2.
3.
4.
5.
[DllImport("chai.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void CiStrError(short cierrno, ref string buf, short n);

string str = string.Empty;
CiStrError(10, ref str, 64);



так не работает, подскажите как надо?
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38880875
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimasikus,

вместо string передавай StringBuilder.
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38880976
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо работает, тока строка "潮猠捵⁨敤楶散漠⁲扯敪瑣"
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38881032
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimasikus, попробуйте посмотреть на ссылку от Изопропил

попробуйте [MarshalAs(UnmanagedType.LPStr)]


CiStrError - посмотрите в примерах... как из сишного кода используют...
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38881071
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за совет, разобрался почему так, просто в функции используется не Unicode a ANSI
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38882718
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наткнулся на то что одна функция принимает двумерный массив. В MSDN не нашел Подскажите ка сделать?
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38882880
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimasikusПодскажите ка сделать?
передать одномерный, индексы пересчитать
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38882908
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это так:
Код: c#
1.
2.
3.
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 32)]
        
private String[] name;
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38883158
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так или нет, скорее всего нет потому что выкидывает ошибку
Код: c#
1.
2.
3.
Необработанное исключение типа "System.TypeLoadException" в CAN_test.exe
Дополнительные сведения: Невозможно упаковать поле "name" типа "CHIP_STATE_DESC":
Недопустимое сочетание управляемого и неуправляемого типов (поля массивов должны составлять пару с ByValArray или с SafeArray).


напишите пожалуйста как надо.
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38883961
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimasikusнаткнулся на то что одна функция принимает двумерный массив. В MSDN не нашел Подскажите ка сделать?
char[][] или char**?
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #38884467
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
char[][]
я уже разобрался, при маршалинге двумерный массив преобразуется в одномерный. я делал правильно
Код: c#
1.
2.
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 32)]
private String[] name;


тока вместо ByValTStr надо ByValTArray и в место String[] надо char[]
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #39130558
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
встретил функцию она принимает char**. не знаю что передавать, пробовал ref string, ref char, ref StringBilder не работает. может кто сталкивался?
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #39130586
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimasikus,

Что делает функция с параметром?

от этого сильно ответ зависит.(char ** вполне может быть указателем на массив строк,например)

универсальное решение - ref IntPtr - и далее руками маршаллить( Marshal.PtrToStringAnsi, Marshal.StringToCoTaskMemAnsi и т д)
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #39130597
dimasikus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
она туда записывает что то
...
Рейтинг: 0 / 0
Подключение библиотеки .dll на C++ в проект C#
    #39130775
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimasikusона туда записывает что то
значит я правильно предположил -

параметр ref IntPtr,
строка получается при помощи Marshal.PtrToStringAnsi (естественно, в c# имеем копию строки)
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение библиотеки .dll на C++ в проект C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]