3 / 3 / 1
Регистрация: 10.09.2014
Сообщений: 36
1

Как вызвать функцию из dll, написанной на C++?

10.11.2016, 22:47. Показов 2227. Ответов 4

Здравствуйте, как вызвать данную функцию правильно:
C++
1
extern int __stdcall CheckRequestA(char * aInBuffer, char * &aOutBuffer);
Собственно, я вызываю вот так:
C#
1
protected static extern IntPtr CheckRequestA(StringBuilder aInBuffer, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder aOutBuffer);
Но после вызова я должен получить данные из второго параметра, но они получаются не правильно, вместо правильной строки выдаёт строку с разными "рандомными" символами, пробовал также вместо StringBuilder ставить IntPtr выдаёт исключение что память повреждена и запись/чтение невозможно (такую же ошибку выдаёт в случае если StringBuilder не инициализирован).

Вот такая проблема.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2016, 22:47
Ответы с готовыми решениями:

Не получается вызвать функции из dll, написанной на Delphi
Использую библиотеку программы Invisible Secrets. А именно jpgcarrier.dll . Она шифрует\дешифрует...

Вызов программой, написанной на С++, функции из dll, написанной на Assembler (явное подключение dll)
Доброго времени суток!Задали лабораторную работу: программа, написанная на с++ должна подключать...

Не получается вызвать функцию из простейшей библиотеки, написанной на C++
Братва, спасай! Я уже все волосы с груди содрал! Создал новую библиотеку, чистую, чтоб уж...

Как вызвать функцию из подключенной dll
Здравствуйте, подскажите пожалуйста как вызвать функцию result, если этот код будет помещен в...

4
Администратор
Эксперт .NET
14510 / 11749 / 4745
Регистрация: 17.03.2014
Сообщений: 23,825
Записей в блоге: 1
11.11.2016, 03:49 2
ZHSV, попробуй так:
C#
1
2
3
4
5
6
protected static extern int CheckRequestA(
    [MarshalAs(UnmanagedType.LPStr)]
    string aInBuffer,
    [MarshalAs(UnmanagedType.LPStr)]
    out string aOutBuffer
);
1
h1f
20 / 1 / 0
Регистрация: 08.12.2015
Сообщений: 5
11.11.2016, 10:12 3
Если функция импортируется из сторонней библиотеки то попробуй указать кодировку, а дальше как предложил ZHSV

C#
1
2
3
4
5
6
7
[DllImport("dll.name", CharSet = CharSet.Auto)]
protected static extern int CheckRequestA(
    [MarshalAs(UnmanagedType.LPStr)]
    string aInBuffer,
    [MarshalAs(UnmanagedType.LPStr)]
    out string aOutBuffer
);
1
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
11.11.2016, 11:39 4
И вот ещё отсюда http://www.mono-project.com/docs/advanced/pinvoke/
C#
1
2
3
4
5
 [DllImport ("does-not-exist")]
 private static extern void Foo (
      [MarshalAs(UnmanagedType.LPStr)] string ansiString,
      [MarshalAs(UnmanagedType.LPWStr)] string unicodeString,
      [MarshalAs(UnmanagedType.LPTStr)] string platformString);
1
3 / 3 / 1
Регистрация: 10.09.2014
Сообщений: 36
11.11.2016, 12:11  [ТС] 5
Всё равно или ошибки или же мусор какой-то во втором параметре выдаёт, в итоге просто написал обёртку на C++ CLI
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2016, 12:11
Помогаю со студенческими работами здесь

Как правильно вызвать функцию из dll на С++?
Добрый вечер. Подскажите, пожалуйста, как описать функции в дельфи-проекте если имеется dll...

Как вызвать функцию .exe из .dll?
Надо как то вызвать функцию которая объявлена и определена в .exe из .dll, не юзая хуки, что можно...

Как из DLL вызвать функцию, находящуюся в exe?
Плз. скажите, как из DLL вызвать функцию, находящуюся в exe'шнике. Плз.! Плз.! Плз.!

Как вызвать из своей dll, сделанной в VS2012(C#) функцию 1С
Сделал dll используя VisualStudio2012 (C#). Она прекрасно подключается в 1С и работает, все функции...

Как вызвать функцию, описанную в DLL через Custom Action в wix?
Не нашел подходящего раздела для вопроса, поэтому решил сделать здесь, тк DLL написана на c++! ...

Подскажите, как вызвать в основном файле функцию из .dll, используя функции WinAPI
Привет всем. Подскажите, пожалуйста, как вызвать функцию, определение которой находится в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru