如何设置 C++ 函数以便 p/invoke 使用它?

2023-11-26

希望这是一个无脑简单的问题,但这表明我缺乏 C++ 专业知识。我是一名 C# 程序员,过去我使用 P/Invoke 和其他人的 C++/C dll 进行了大量工作。然而,这次我决定自己编写一个包装器 C++ dll(非托管),然后从 C# 调用我的包装器 dll。

我立即遇到的问题是我无法定义可以通过 p/invoke 找到的 C++ 函数。我不知道它的语法是什么,但这是我到目前为止正在尝试的:

extern bool __cdecl TestFunc()
{
  return true;
}

本来我只是有这个,但它也不起作用:

bool TestFunc()
{
  return true;
}

然后在 C# 方面,我有:

    public const string InterfaceLibrary = @"Plugins\TestDLL.dll";

    [DllImport( InterfaceLibrary, CallingConvention = CallingConvention.Cdecl,
        EntryPoint = "TestFunc" ), SuppressUnmanagedCodeSecurity]
    internal static extern bool TestFunc();

一切都会编译,但当我执行此 C# p/invoke 调用时,我收到 System.EntryPointNotFoundException: 无法在 DLL 'Plugins\TestDLL.dll' 中找到名为 'TestFunc' 的入口点。

当然,这在 C++ 端一定是非常简单的事情,我只是不知道其语法。


你会想要使用extern "C"__declspec(export),像这样:

extern "C" _declspec(dllexport)  bool TestFunc()
{
    return true;
}

有关完整详细信息,请参阅MSDN 关于编组类型.

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

如何设置 C++ 函数以便 p/invoke 使用它? 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 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
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 重载<<的返回值

    include
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 标准是否指定了编译器的 STL 实现细节?

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

随机推荐

  • 使用Leaflet markcluster,如何在不更改缩放级别的情况下在集群和非集群之间切换?

    我正在使用Leaflet markercluster插件来聚集我的点 然而 用户要求具有在集群视图和非集群视图之间切换的功能 基本上 他们希望以高缩放比例查看所有点 我知道我可以在特定的缩放级别禁用聚类 markers new L Mark
  • 简单的 OpenGL 纹理贴图不起作用?

    我正在尝试找出 OpenGL 中的纹理映射 但无法找到一个简单的示例来工作 正在绘制多边形 尽管它没有纹理而只是纯色 此外 位图已正确加载到 sprite1 中 因为到目前为止我已成功使用 glDrawPixels 我使用 glGenTex
  • python:计算质心

    我有一个包含 4 列的数据集 x y z 和值 比方说 x y z value 0 0 0 0 0 1 0 0 0 2 0 0 1 0 0 0 1 1 0 1 1 2 0 1 2 0 0 0 2 1 0 0 2 2 0 0 我想计算质心CM
  • Python 赋值运算符左侧的多个变量

    有人可以解释一下逗号分隔链的概念吗 可能不是正确的术语 但我不想将其与list 赋值运算符左侧的变量名 我指的是具有以下性质的东西 reader csv reader open some file rb for row in reader
  • 将 GDAL/OGR 合并到 iOS 项目中 - 快速指南

    问题是这样的 GDAL是一个出色的开源库 旨在管理复杂的 GIS 数据 栅格数据和矢量数据 它完全是为Mac OS 由 William Kyngesburye 提供 和其他平台 但不适用于 iOS 浏览网络 您可以找到有关创建 iOS 库主
  • Python Killed:使用从 2 个 csv 文件创建的字典运行代码时为 9

    我正在运行一个一直对我有用的代码 这次我在 2 个 csv 文件上运行它 data 24 MB 和 data1 475 MB data 有 3 列 每列约 680000 个元素 而 data1 有 3 列 每列约 33000000 个元素
  • 更改Jfreechart中图表的X轴起始值

    我正在计算图像红色分量的直方图并将其存储在 redhisto 中 数组的索引代表强度 0到255 该值表示具有该强度的像素数 然后使用 JFreeChart 绘制这些值 我的问题是 如何让X轴的值从0开始 现在是从负数开始 Can we c
  • 术语“全局属性”和“全局变量”是同义词吗?

    全局对象充当顶级词法环境 作用域链的顶部 如果您愿意的话 这意味着可以通过直接引用 如变量 访问全局属性 global code this foo 1 creating a global property foo accessing the
  • 从对象生成 DTO

    我想从我现有的一些对象中自动生成一些 DTO 我想知道是否已经存在可以使用的 Resharper DevExpress 或 VSX 开源工具 我需要一个工具来查看我的代码并让我选择我想要的属性包含在我的 DTO 中 然后基于该生成一个类 另
  • Lighthouse 错误:“表单元素没有关联的标签”

    如何修复此灯塔错误 表单元素没有关联的标签
  • Flutter 按时间戳对 Firebase 快照进行排序

    I m trying to sort snapshot by timestamp but returns original order data structure looks like this 我有两个快照 时间戳是 153602546
  • 电话验证正则表达式

    我正在使用此模式来检查电话号码的验证 0 9 9 15 它适用于0771234567 and 0771234567 但我希望它适用于077 1234567 and 077 1234567和 077 1 23 45 67 和 077 123
  • 在 Verilog 中生成 For 循环中实例化模块

    我正在尝试使用 Verilog 实例化一些模块generate块 因为我将实例化可变数量的它们 genvar i generate for i 1 i lt 10 i i 1 begin status whatever status clk
  • 无法使用 Rails 5.2、AWS S3 和 ActiveStorage 自动加载常量 ActiveStorage::Blob::Analyzable 错误

    我已经和这个家伙战斗了一段时间了 并且已经完成了所有的谷歌 here here 以及许多同样无益的其他人 但无济于事 官方错误是这样的 在我的创建方法的第一行调用 无法自动加载常量 ActiveStorage Blob Analyzable
  • 是否存在 SHA1(x) 等于 x 的 x?

    有没有一个x where SHA1 x x 我正在寻找证据或强有力的论据来反对它 与问题相同的论点适用于此有MD5定点吗 IE 对于随机选择的函数 该值约为 63
  • Lua表的一个有趣现象

    我是Lua新手 这几天正在学习table的用法 从教程中我知道Lua对待数字索引项和非数字索引项的方式不同 所以我自己做了一些测试 今天我发现一个有趣的现象 我无法解释它 The code t 1 2 3 a a b b print t g
  • android webview youtube 嵌入视频自动播放不起作用

    我无法自动播放我的视频 请帮忙 我的sdk版本 android minSdkVersion 14 android targetSdkVersion 19 gt 我尝试按照代码中指定的方式放置 JavaScript public void o
  • for循环中分号放错位置[重复]

    这个问题在这里已经有答案了 当我做作业时 我犯了一个小错误 在 for 循环中像下面的代码一样 for i 0 i
  • 如何从表单外部捕获表单的某些事件?

    我正在做一些需要监控多种表格的事情 从表单外部 并且不将任何代码放入表单内 我需要以某种方式从这些表单捕获事件 很可能以 Windows 消息的形式 但是 如何从与其相关的类外部捕获 Windows 消息呢 我的项目有一个对象 它包装了它正
  • 如何设置 C++ 函数以便 p/invoke 使用它?

    希望这是一个无脑简单的问题 但这表明我缺乏 C 专业知识 我是一名 C 程序员 过去我使用 P Invoke 和其他人的 C C dll 进行了大量工作 然而 这次我决定自己编写一个包装器 C dll 非托管 然后从 C 调用我的包装器 d