教你快速在c#中调用C++代码(函数)

之前写过一段C++的代码,想给他用C#写个界面,也就是想让这段代码在C#中可以运行。看了百度的很多方法,都说是封装成dll调用,但是按照步骤来总会出现各种错误,像以下的这种:

并且迟迟不能解决,今天竟然有人跟我说直接把dll提取到C#工程的bin文件下就可以了,三观都毁了....尝试了一下,真的成功了,在这里把具体步骤和大家说一下,避免

在这种问题上浪费大量的时间。

首先,我们随便建立一个C++的工程(为了获取dll),将你打算在C#使用的函数用下面这种格式 extern "C" __declspec(dllexport) 封装一下:

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <string>
using namespace std;

void output()
{
	cout << "hello world" << endl;
}
extern "C" __declspec(dllexport) int sum(int a, int b)
{
	output();
	return a + b;

}

然后右键点击工程名-->属性-->配置属性-->常规--->将配置类型改为dll

然后编译,将与工程名同级的debug文件夹下的dll提取,放置C#工程bin文件-->debug下,运行即可。

加上包  和begin,end之间的代码,然后在主程序中直接调用函数即可。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Runtime.InteropServices;// 要加上

namespace Csharp
{
    class Program
    {
         //  begin
          [DllImport("Tach.dll",
          EntryPoint = "sum",
          CharSet = CharSet.Ansi,
          CallingConvention = CallingConvention.StdCall)]
          public static extern int sum(int a,int b);
          //end  

          static void Main(string[] args)
          {
              int res = sum(1, 2);
              Console.WriteLine(res);
          }
    }
}

结果如图,成功运行!

由于没有进行大量的测试,本方法可能存在问题(感觉和网上的都不一样.....),如果本方法有错误或者大家有更加好的方法,请在博客下留言,希望可以帮助到大家!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 09:13:18

教你快速在c#中调用C++代码(函数)的相关文章

Js文件中调用其它Js函数的方法

Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分代码在另外一个Js文件中已经完成了,自己只需要调用这个方法再加上几句代码就可以实现所需的功能.我们知道,在html中,利用<script language="javascript" type="text/javascript" src="../script.js"></script>引入的两个js是

如何在Java中调用Python代码

有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调用对方的代码”. 下面我将举一些简单的小例子,借此说明:如何在Java中调用Python代码. 看懂这篇文章只需要具备: 熟悉Java的基本语法 懂一点点Python 主要内容如下: 什么是Jython? 一个HelloPython程序 在Jvm中执行Python脚本 仅在Java中调用Python

C#中调用PowerShell代码

在C#中调用PowerShell代码,很多时候Add是不好使的!要用AddScript!记录一下! using (Runspace runspace = RunspaceFactory.CreateRunspace()) { try { runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); //必须要用AddScript. pipeline.Commands.AddScript("Add-PSSnapin Microsof

使用Ajax在javascript中调用后台C#函数

最近一段时间在紧跟一个网站的项目,数据库中用户表的UserName要求是唯一的,所以当用户选定一个用户名进行注册时要首先检查该用户名是否已被占用,并给出提示.起初的实现是:用户填写完注册表单提交后,在后台进行验证.但看到很多网站的设计是当用户填写完用户名,TextBox失去焦点后就会立即给出提示,比如https://passport.csdn.net/account/register,反应很迅速,应该是在前台进行检查的.今天花了些时间针对这一点查了一些资料. js调用后台C#函数检测用户名时需要

度量快速开发平台中使用.NET,API函数

在平台中编写代码的时候,我们可以调用.NET的函数,但是需要注意引用全名例如:'判断文件是否存在System.IO.File.Exists("D:.txt")'读取文件内容dim str=System.IO.File.ReadAllText("D:.txt",System.Text.Encoding.UTF8)'删除文件System.IO.File.Delete("D:.txt") [size=13.3333330154419px]更多函数后续补

Objective中调用Swift代码

原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc 步骤比较简单: 1.在Objective C工程中,创建新文件(command+N),选择Swift文件 2.选择创建bridge-header,后会生成两个文件,一个是bridge-header(这个暂时没用,这个文件是用来将objective c中的接口暴露给swift),一个是swift文件 3.在swift中想要暴露给objective C中的类或者方法前加上@objc关键字(@objc关键字的一

在C#的Web项目中调用Matlab代码的方法

为了毕设的图形检索方向的研究,本人需要在信科的师兄师姐们已经完成的C#界面中,调用现在研究的算法的Matlab代码,以便看到实验的效果.前段时间已经拖延了1个多月,一方面因为实习越来越多事情,时间减少了很多:但更重要在于C#调用Matlab的方法真心麻烦,C#的Web项目中进行这个操作貌似会碰到更多细节上的问题.而且总是很不稳定,操作系统.Matlab或VS的版本.遗漏一些文件或步骤都会造成失败!这个问题本人已经搞了很长时间,直至前几天,在同学的帮助下,自己再弄一遍,总算成功了!下面我及时把这个

在HTML标签&lt;a/&gt;中调用javascript代码

<a/>标签的“href”属性可以是一个有效的URL,表示跳转的目的地,除此之外,href还可以是一段javascript代码.当为“href”设置javascript代码时,格式如下:<a href=”javascript:……;” />.当点击这种形式的超链接时,浏览器将执行“href”中设置的javascript代码.需要注意的是,如果代码执行之后的返回值是一个有效值(除“undefined”之外的值)的话,当前页面的内容将会被返回值替换! W3C标准不推荐使用这种方法来调用

如何在qmake项目中在QML语言中调用C++代码

在这篇文章中,我们将介绍如何在QML中使用C++代码.在以前的文章" 使用C++拓展QML 类型及Property binding!"中,我们可以可以通过C++ plugin的方法来拓展我们的QML功能.那个项目是CMake项目.对于qmake项目来说,我们也可以做同样的事.可以使用一个plugin,并在QML中调用它. 今天,我们将不使用plugin的方法,我们希望在qmake项目中直接调用C++代码.那么我们将如何做呢?这里注意qmake只对15.04及以上的ubuntu手机tar