Коллеги, много раз дела clarion Dll и всегда проблем с принятием вызова адреса строки из C++ или Delphi не было (вызов описывается двумя параметрами размер и адрес) Сейчас dll пытаются дернуть из Шарпа и дело не идет кусок кода даю:
[DllImport("TgtLicGen.dll", CharSet=CharSet.Ansi, CallingConvention = CallingConvention.Cdecl, ExactSpelling=true, EntryPoint="TGTLG_OPENPOSTDB")]
private static extern int TGTLG_OpenPostDb([MarshalAs(UnmanagedType.LPStr)] ref StringBuilder str);
static void Main(string[] args)
{
StringBuilder path = new StringBuilder(@"e:\WORK\TGT\tgtLicGen_06032012\TGTMAILSERVERPOST.TPS", 512);
int success = TGTLG_OpenPostDb(ref path);
Console.WriteLine(success);
Console.WriteLine(path);
На Clarion функция которую вызывают такая - TGTLG_OpenPostDb(*CSTRING),LONG,PASCAL
Я с шарпом пока не знаком так что кто поможет подружить нас? Меня смущает TGTLG_OpenPostDb(ref path) дается один параметр строки
Вызов Cstring ClarionDll из шарпа
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Andrew Listiev
- Активист
- Сообщения: 166
- Зарегистрирован: 07 Июль 2005, 11:16
- Откуда: Латвия, Рига
Re: Вызов Cstring ClarionDll из шарпа
[DllImport("TgtLicGen.dll", CharSet=CharSet.Ansi, CallingConvention = CallingConvention.Cdecl, ExactSpelling=true, EntryPoint="TGTLG_OPENPOSTDB")]
private static extern int TGTLG_OpenPostDb([MarshalAs(UnmanagedType.LPStr)] ref StringBuilder str);
Разница с конвенцииTGTLG_OpenPostDb(*CSTRING),LONG,PASCAL
Re: Вызов Cstring ClarionDll из шарпа
а можно мне подробнее сказать чего там надо написать в конвенции на шарпе?