美文网首页
c#调用c++

c#调用c++

作者: 大啸 | 来源:发表于2023-01-15 17:25 被阅读0次

    生成动态链接库(.dll)

    打开visual stduio 新建项目选择动态链接库(DLL)

    创建DLL项目.png
    不使用预编译头
    image.png
    删除 phb.h和phb.cpp 两个文件,并创建自己的文件如图
    image.png
    编写代码 AddOperator.h:
    #pragma once
    // c# 不认识c++代码,所以 extern "C" 很关键
    extern "C" _declspec(dllexport) int Sum(int a, int b);
    

    AddOperator.cpp:

    #pragma once
    #include "AddOperate.h"
    #include "iostream"
    using namespace std;
    
    int Sum(int a, int b)
    {
        if (a - (int)a != 0 || b - (int)b != 0) {
            cout << "请输入整数" << endl;
            return -1;
        }
        return a + b;
    }
    

    F7 生成解决方案,找到生成的.dll文件,32位的就拷贝到C:\Windows\System32,64位的就拷贝到C:\Windows\SysWOW64,或者将dll文件跟可执行文件放一起。

    使用动态链接库

    参考以下代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    namespace WindowsFormsApp1
    {
        
        public partial class Form1 : Form
        {
            [DllImport("Dll1.dll", CallingConvention = CallingConvention.Cdecl)]
            extern static int Sum(int a, int b);
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                MessageBox.Show(Sum(2, 1).ToString());
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:c#调用c++

          本文链接:https://www.haomeiwen.com/subject/vzeacdtx.html