如何从c#调用c++函数

本文关键字:c++ 函数 调用 | 更新日期: 2023-09-27 18:13:50

我正在尝试调用c#学院提供的c++函数。他给我提供了一个dll和下面的头文件。

<标题> c++头h1> 用下面的c#代码来调用上面的c++函数,结果出现了下面的错误:

"试图读写受保护的内存。"这通常表明其他内存已损坏。"

如何在c#中调用这个函数?c++代码需要修改吗?

<标题> c# h1> 多的背景:我的学院已经开发了几个与财务相关的计算,我希望我们可以用最少的努力在另一个c#应用程序中重用他的整个库。我和他在这方面的经验都很有限(创建可导出的c++代码并在c#中使用它),所以欢迎任何其他提示。

如何从c#调用c++函数

你没有机会直接从c#调用这个函数。vector<>与c# int[]没有关系。

你最好的选择是将c#库包装在一个托管的c++包装器中,这样你就可以在导入时完成从c#类型到c++类型的转换,在导出时完成从c++类型到c#类型的映射。

如果您与库的开发人员一起工作(而不是仅仅使用他的库),那么可能值得看看他提供的c++ CLI构建,您可以直接使用标准c#。你需要处理lib代码中的vector/stl使用-要么用cli列表(或其他托管容器)替换它,要么找到包装器解决方案(有各种SO帖子关于eg在这里和在这里)。
我认为这可能是一个长期的解决方案,比基于pinvoke的原始c++互操作更容易。