Delphi функция

Pavluha
Дата: 12.05.2014 12:06:38
        [DllImport("*.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "#100")]
        public static extern string GetFldStr(int Num, [MarshalAs(UnmanagedType.LPStr)] string Field);


Сама функция описана в файле во вложении


Вызов функции приводит к ошибке:
FatalExecutionEngineError:
The runtime has encountered a fatal error. The address of the error was at 0x6f4293ba, on thread 0x22f0. The error code is 0xc0000005. This error may be a bug in the CLR or in the unsafe or non-verifiable portions of user code. Common sources of this bug include user marshaling errors for COM-interop or PInvoke, which may corrupt the stack.

Что не так и куда копать подскажите плз?
Pavluha
Дата: 12.05.2014 12:06:58
Pavluha,
Cat2
Дата: 12.05.2014 13:27:13
Pavluha
Что не так и куда копать подскажите плз?

Я бы копал в написание этой функции на C#
Pavluha
Дата: 12.05.2014 13:31:55
Cat2,

О какой функции вы говорите, если это функция из библиотеки Delphi
Я только вызываю ее и все. Выше описан код, как я ее импортировал себе в проект
Cat2
Дата: 12.05.2014 14:08:33
Pavluha
Cat2,

О какой функции вы говорите, если это функция из библиотеки Delphi
Я только вызываю ее и все. Выше описан код, как я ее импортировал себе в проект

О той, которую надо написать вместо функции из библиотеки Дельфи
Cat2
Дата: 12.05.2014 14:14:00
На C# это даже не функция будет, а оператор.

string StrField = table.Rows[Num][Field].ToString();
Pavluha
Дата: 12.05.2014 14:23:23
Cat2,

В этом нет необходимости, т.к. при вызове ее возникает ошибка.
Вызов осуществляется вот так:
innNum = FM.GetFldStr(9, "");
Pavluha
Дата: 12.05.2014 14:33:57
Cat2,

Забыл сказать, что библиотека используется в проекте скомпилированного под 4 framework.
Под 2 framework работает все хорошо, такой ошибки нет.
Arm79
Дата: 12.05.2014 15:30:47
Pavluha
*.dll

Pavluha
EntryPoint = "#100"

Это так и должно быть?

Функция в библиотеке Delphi также имеет объявление stdcall?
Pavluha
Дата: 12.05.2014 15:44:11
Arm79,

*.dll это я не указывал просто имя. Имя явное указано
насчет #100. это точка входа. Она корректная. Потому что в коде вызов этой функции происходит многократно и приложение "падает" не при первом вызове этой функции.