C#:将 int 数组传递给 c++ dll

2023-12-05

我有一个 C++ dll,用于卡片打印(身份证)。我的实现是使用 C#.Net 完成的。我使用以下代码来调用 c++ dll。

[DllImport(@"J230i.dll",CallingConvention = CallingConvention.Cdecl,SetLastError=true)]
public static extern int N_PrintJobStatus(ref int[] nPrtintjobStatus);

int[] pJob = {0,0,0,0,0,0,0,0} ;

ret = N_PrintJobStatus( ref pJob);

N_PrintJobStatus 方法签名如下

N_PrintJobStatus(int *pJobStatus )

调用该方法后出现以下错误

对 PInvoke 函数“********!*********.frmCardPrint::N_PrintJobStatus”的调用使堆栈不平衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。

我该如何解决这个问题

谢谢 .....


你的翻译不正确。一个 int 数组,int*不映射到ref int[]。后者将被整理为int**。你需要改为使用int[].

[DllImport(@"J230i.dll", CallingConvention = CallingConvention.Cdecl, 
    SetLastError = true)]
public static extern int N_PrintJobStatus(int[] nPrtintjobStatus);

在调用函数之前分配数组。想必您有某种方法来确定它应该有多长。就目前情况而言,该函数看起来像是等待发生缓冲区溢出。函数如何知道数组有多长,从而采取措施避免写入超出其末尾?

目前尚不清楚这是唯一的问题。我们不能确定返回类型确实是int。或者调用约定是 cdecl。或者该函数确实调用了SetLastError.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#:将 int 数组传递给 c++ dll 的相关文章

  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • Mongo 在 Meteor 应用程序中的 _id_ 字段上给出重复键错误

    我已经搜索了很长时间并且有很多关于这个问题的主题 直到现在我还没有找到任何解决办法 另外 我也不是很清楚 希望能帮到你 这是我的问题 我设计了一个 Meteor 应用程序 Mongo DB 中有一个带有订单的集合 该集合是通过读取 csv
  • 查找与备份策略关联的 Azure 备份/保留

    我可以通过以下方式获取备份策略名称 如何通过 Powershell 查找 Azure VM 应用的备份保护策略名称但希望找到与备份策略相关的实际配置 如以下数据 备份频率 每日 00 00 保留范围 保留每日备份点 保留每天 00 00 进
  • 将 swift 对象转换为 JSON 字符串

    我有这样的课程 class MyDate var year String var month String var day String init year String month String day String self year
  • 使用 Ruby 和 Mechanize 填写远程登录表单之谜

    我正在尝试实现一个 Ruby 脚本 该脚本将接受用户名和密码 然后继续在另一个网站的登录表单上填写帐户详细信息 然后返回然后按照链接检索帐户历史记录 为此 我使用了机械化宝石 我一直在关注这些例子here但我似乎仍然无法让它发挥作用 我已经
  • 为什么我无法访问该文件夹? [关闭]

    Closed 这个问题是无关 目前不接受答案 不久前我买了一个 1TB USB 外置驱动器 我在 Ubuntu 中将其格式化为 ext4 并从几台机器上将一堆文件 文件夹复制到其中 全部分别复制到 home machinename what
  • 在 C# 中按 X 或 Close() 时 WinForms 窗体不会关闭

    我在使用 WinForm 时遇到了一些奇怪的问题 它似乎由于某些奇怪的原因而拒绝关闭 我有非常简单的 gui 有时按 X 不会做出反应 或者当我在按钮上使用事件时 它甚至会到达Close 并且什么也不做 private void butto
  • 计算天际线面积时如何减少/优化内存使用?

    我正在尝试计算天际线的面积 具有相同基线的重叠矩形 building count int input items dictionary location on x axis is the key height is the value co
  • 错误! C:\file\example.db 不是 UTF-8 编码的 ipython 笔记本

    请帮忙 我在 ipython 笔记本中使用 sqlite3 来创建 SQL 数据库 我认为我已经成功创建了数据库 但是当我查看它时 我收到编码 UTF8 错误 这是我的代码 import sqlite3 conn sqlite3 conne
  • 在 Bigquery 中将 Unicode 解码为本地语言

    我们在 Bigquery 中收到调查 Web hook 数据 本地语言的注释被捕获为 unicode 并且我们在该注释中确实有特殊字符 Example 调查评论 别老是晚点 现场补行李费太贵 Bigquery 数据中的评论 u522b u8
  • jquery源在html文件中的位置重要与否

    这是单击按钮弹出警报的示例 If the above part is put in head part it works If the above part is put like below it does not work 这让我抓狂
  • Eclipse:选择自动复制到剪贴板

    我喜欢 Emacs 的一个功能 它可以自动将所选内容复制到剪贴板 是否可以在 Eclipse 上做同样的事情 环境 Windows XP Helios 要将字符串从 Eclipse 复制到剪贴板 您可以使用 void copyToClipb
  • pandas 将 group by 和行合并到列

    我正在尝试转换这个数据集 A B C 1 x1 a 1 x1 a 1 x1 b 2 x2 b 2 x2 a into A B C1 C2 C3 1 x1 a a b 2 x2 b a null df pd DataFrame A 1 1 1
  • 如何将R图图像保存到数据库?

    我想将绘图图像直接保存到数据库中 R 中最好的方法是 将绘图图像 png 写入文件系统 读取写入的文件 通过查询 RODBC 将文件发送到数据库 理想情况下 我想通过简单地将 png 图像写入二进制连接来组合上面的步骤 1 和 2 R支持这
  • 如何获取前兄弟姐妹的姓名

    我需要获取前一个兄弟姐妹的名字 为了简单起见 我有一些示例代码 p paragraph p
  • 嵌入式 segue 中未调用prepareForSegue

    我有一个表视图控制器嵌入在视图控制器的容器中 在视图和表视图控制器的prepareForSegue方法中 我放置了NSLog 控制器的名称 我看到视图控制器的日志 但没有看到表视图控制器的日志 难道我不应该看到表视图的prepareForS
  • 如何释放 Windows Phone 8 应用程序中数据模板中图像占用的内存?

    我有一个长列表选择器 我有一个数据模板 用于定义要添加到列表中的项目类型 数据模板有一个图像控件 其源与路径动态绑定 因此列表中的每个项目都有一个关联的图像控件 我面临的问题是这些图像控件永远不会释放它们占用的内存 导致内存不足异常 在正常
  • Django 按距离排序

    我有以下模型 class Vacancy models Model lat models FloatField Latitude blank True lng models FloatField Longitude blank True 我
  • Zend Framework 2 - 通过 URL 的多个模块

    我目前正在使用 Git 中的 ZendFramework Skeleton 应用程序 并尝试利用它的模块部分来拥有多个模块 可以通过 URL 进行更改 如下所示 http localhost application index index
  • 在 iOS Swift 中下载 mp3 格式的 YouTube 视频

    有什么方法可以获取 youtube 视频的 mp3 链接吗 我尝试了多个在线 youtube 到 mp3 转换器网站 但它只是将文件下载到系统中 并且不提供任何 mp3 链接 Or 有什么方法可以从链接下载文件 假设有一些像 www som
  • C#:将 int 数组传递给 c++ dll

    我有一个 C dll 用于卡片打印 身份证 我的实现是使用 C Net 完成的 我使用以下代码来调用 c dll DllImport J230i dll CallingConvention CallingConvention Cdecl S