将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

2024-05-24

我正在尝试将字符串从 C# 传递到 Delphi 构建的 DLL。 Delphi DLL 需要 PChar。

这是Delphi导出

procedure DLL_Message(Location:PChar;AIntValue :integer);stdcall;
external 'DLLTest.dll';

C# import(我尝试的最后一个,有 string、char* ref string ...)

[DllImport(
            "DLLTest.dll", 
            CallingConvention = CallingConvention.StdCall,
            CharSet = CharSet.Ansi,
            EntryPoint = "DLL_Message"
        )]
        public static extern void DLL_Message(IntPtr Location, int AIntValue);

我以任何方式访问值时都会遇到访问冲突。

在 C# 中是否有任何解决方案可以将字符串值作为 PChar 传递?


尝试使用 MarshalAs 属性,它允许您控制所使用的本机类型。

可以在 MSDN 中找到类型列表:

http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.unmanagementtype.aspx http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.unmanagedtype.aspx

DllImport(
            "DLLTest.dll", 
            CallingConvention = CallingConvention.StdCall,
            CharSet = CharSet.Ansi,
            EntryPoint = "DLL_Message"
        )]
        public static extern void DLL_Message(
            [MarshalAs(UnmanagedType.LPStr)] string Location,
            int AIntValue
        );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串作为 PChar 从 CSharp 传递到 Delphi DLL 的相关文章

  • 我可以在 C# 11 中仅为一个成员设置 SetsRequiredMembers 或其他属性吗?

    考虑以下代码 public record Foo public required string A get init public required string B get init public record Bar Foo publi
  • 禁用 Eclipse 的错误发现。 (Codan 误报)

    到目前为止我的经验是 Eclipse 的错误发现是可怕的错误 没有任何解决方案 尝试过 GXX EXPERIMENTAL CXX0X std c 0x std c 11在设置的每个点附近 我现在不想再寻找解决方案了 现在我只想看到真正的编译
  • 我可以将 OpenCV 的发布配置与我的应用程序的调试配置一起使用吗?

    我正在编写一个通用 Windows 应用程序 它使用 OpenCV 进行相机校准和标签检测等 我希望能够在我自己的 DLL 处于调试模式时使用发布模式 完全优化的 OpenCV DLL 这可能吗 如果是这样 我如何配置 CMake 来实现它
  • 编译时位掩码的递归模板

    我正在尝试使用元编程技术创建一个编译时位掩码 我的想法是创建如下内容 unsigned int Mask3 Mask lt 2 gt value 0x03 b00000000000000000000000000000011 unsigned
  • 如何在敏捷项目中进行版本编号? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 目前 我们的 C winforms 项目使用以下版本编号方案 主要版本 次要版本 迭代编号 该迭代中的内部版本号 我们希望能够仅通过查看版本号来
  • asp:repeater 折叠表行 - 已更新

    我想知道是否有人对我的问题有创造性的解决方案 我有一个从我的数据库填充的转发器 如下所示
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • 没有配置身份验证处理程序来处理该方案

    这是一个非常烦人的问题 我在我的 asp net core 项目上设置 cookie 身份验证 有时会出现此错误 有时不会 没有图案 它只是开始抛出错误 然后突然停止 然后再次开始 例外情况是 InvalidOperationExcepti
  • 字符串/分段错误

    Program to calculate trip and plan flights define TRIP 6 define NAMEMAX 40 define DEST 1 include
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 如何在 Google Mock 中使用可选参数来模拟方法?

    如何使用可选参数模拟方法谷歌模拟 例如 class A public void set enable bool enabled true class MockA public A MOCK METHOD1 set enable void b
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • 在编译输出中添加程序集绑定 (app.config)

    如果我编译应用程序 则会在输出中自动添加程序集绑定 具体的程序集绑定不在app config在 Visual Studio 中但在创建的应用程序配置中 有什么办法可以检查为什么会自动添加程序集绑定吗 选项AutoGenerateBindin
  • 我的 32 位和 64 位 COM 组件可以同时驻留在同一台计算机上吗?

    我有一个 32 位 COM 组件 主要由 ASP 使用 我们也有 64 位版本 64 位版本在功能上是相同的 并且也使用相同的 ProgID 据我所知 相同的 CLSID 等 我可以在与 32 位版本相同的计算机上安装 regsvr 64
  • 我想找到 C# 代码中所有后面没有括号的 if 语句。通过正则表达式

    我想找到所有if声明和for后面没有大括号的语句 当你在一个文件中写入一行时if声明您大多不会将其括在大括号中 所以我想找到所有这些if and for声明 请帮忙 就像我想捕捉这个声明 if childNode Name B return
  • 绑定集合的子集

    我有一个ObservableCollection
  • 如何通过分解 y 轴来减小 mschart 的高度

    如何降低 mschart 的高度 如下所示 编辑 就我而言 我不想查看中断图表 this chart1 ChartAreas 0 AxisY ScaleBreakStyle Enabled false 您似乎正在寻找AxisY ScaleB
  • 为什么 C# 中的命名空间允许循环依赖?

    在 c 中 您可以在文件 a cs 其命名空间为 MyApp A 中拥有一条语句 using MyApp B 而文件 b cs 其名称空间为 MyApp B 已经包含该语句 using MyApp A 如果类似的依赖关系存在于不同的 dll
  • 如何处理文件名中的空格

    我正在尝试迭代本地目录中的文件 foreach string name in Directory GetFileSystemEntries path FileAttrtibutes att File GetAttributes name 文
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n

随机推荐