powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызов функции из внешней DLL (передача параметров).
5 сообщений из 5, страница 1 из 1
Вызов функции из внешней DLL (передача параметров).
    #32647761
Сат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется:
некая длл, и два хедера к ней - один pure C, второй VB.
в этой DLL имеется некая функция:
VB:
Код: plaintext
1.
2.
3.
4.
5.
    Public Declare Function GetVarInfo Lib "xxx.dll" Alias "GetVarInfo" _
                                (ByVal handle As Long, _
                                 ByVal iVar As Long, _
                                 ByVal varName As String,_
                                 ByRef varType As Long) As Long
C:

Код: plaintext
1.
2.
3.
4.
5.
int __far __pascal spssGetVarInfo(
    const int handle,
    int iVar,
    char __far *varName,
    int __far *varType);  
//на __far и __pascal не обращаем никакого внимания- это все остатки 16 бит(есть как 32 так и 16 битная версия этой длл)

В мини хелпе описание параметров выглядит вот так:
handle Handle to the data file
iVars Zero origin variable number
varName Returned as the variable name
varType Returned as the variable type

Интересует вот этот параметр char *varName (в VB: ByVal varName As String). Он возвращает собственно какое-то имя(оно не может быть больше n символов).
Как и какую переменную мне объявить в C# что бы нормально ее туда вогнать ь и получить назад??
...
Рейтинг: 0 / 0
Вызов функции из внешней DLL (передача параметров).
    #32647773
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычно используют StringBuilder
---
ByVal - он разве возвращает ?
...
Рейтинг: 0 / 0
Вызов функции из внешней DLL (передача параметров).
    #32647841
НЕ СКАЖУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СатКак и какую переменную мне объявить в C# что бы нормально ее туда вогнать ь и получить назад??
Если используешь ф-ию из C,то можешь объявлять переменную типа char* в C#.
...
Рейтинг: 0 / 0
Вызов функции из внешней DLL (передача параметров).
    #32648261
Сат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кузяобычно используют StringBuilder

Пробовал. И с [MarshalAs(UnmanagedType.LPStr)]StringBuilder и как out и как [in,out] - один черт - не работает.

кузяByVal - он разве возвращает ?
Как бы вот этот момент меня больше всего беспокоит... для этого и С-шный прототип привел.

НЕ СКАЖУЕсли используешь ф-ию из C,то можешь объявлять переменную типа char* в C#.
unsafe кода хотелось бы избежать.
...
Рейтинг: 0 / 0
Вызов функции из внешней DLL (передача параметров).
    #32648317
Сат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все господа. Всем спасибо. Проблема снята.
По недосмотру была неправильно прописана сигнатура функции в DLLImport.

[MarshalAs(UnmanagedType.LPStr)]StringBuilder varName - прекрасно работает.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызов функции из внешней DLL (передача параметров).
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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