Коллеги, много раз дела 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 из шарпа
а можно мне подробнее сказать чего там надо написать в конвенции на шарпе?
			
			
									
						