如何在C#中从DLL导入 Delphi 函数(返回PAnsiChar)

vm0i2vca  于 2022-11-04  发布在  C#
关注(0)|答案(1)|浏览(279)

Delphi 中的函数是-

FuncName: PAnsiChar (stdcall)

我不知道其余的功能代码,因为我打不开Dll。
我试着用C#实现它,就像这样-

[DllImport("Lib2-2-1.dll", EntryPoint = "FuncName", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        [return: MarshalAs(UnmanagedType.AnsiBStr)]
        public static extern string FuncName();

当我试图在代码中调用这个C#函数时,所有的东西都没有错误地关闭,代码停止执行。有人能帮助我吗?并解释如何正确编写它。
还有一件事。我试着用DotPeek打开这个DLL,但是它打不开,上面写着-不支持,有人能解释一下我怎么才能查看里面的代码吗?

tct7dpnv

tct7dpnv1#

好的

答案如下:i found it in this question thread这里是从Dll导入

[DllImport("Lib2-2-1.dll", EntryPoint = "FuncName", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
    [MethodImplAttribute(MethodImplOptions.PreserveSig)]
    public static extern IntPtr FuncName();

这怎么叫

IntPtr ptr = FuncName();
string result = Marshal.PtrToStringAnsi(ptr);

相关问题