VS2022 C++创建动态链接库,C#调用简单示例

打开VS2022,创建新项目,语言选择C++,项目类型选择“库”,在下拉列表里找到“动态链接库(DLL)。
项目名称,默认用:Dll1。
在项目,头文件里添加头文件:mydll.h

#pragma once
#ifdef __DLLEXPORT
#define __DLL_EXP _declspec(dllexport) 
#else
#define __DLL_EXP _declspec(dllimport) 
#endif 

extern "C" __DLL_EXP int add(int a, int b);

在项目,源文件里添加源文件:mydll.cpp,代码如下:

#include<stdio.h>
#include "mydll.h"
#include"pch.h"

int add(int a, int b)
{
	return a + b;
}

在项目,源文件里添加模块定义文件:Source.def,代码如下:

LIBRARY Dll1
EXPORTS add

其中,Dll1位DLL文件的名字,add为你想导出的函数。

在项目,右键–属性,配置属性,C/C++,预处理器,预处理器定义,下拉列表里点“编辑”,添加:

__DLLEXPORT

在项目,右键–属性,配置属性,C/C++,预编译头,预编译头,下拉列表里选择“不使用预编译头”
在项目,右键–生成,复制生成的DLL1.dll完全路径。

在C#中调用示例:
创建C#控制台程序,在Program.cs中的代码如下:

using System;
using System.Runtime.InteropServices;

namespace ConsoleApp1
{
    class Program
    {
        [DllImport("D:\\Desktop\\Dll1\\Debug\\Dll1.dll")]  
        public extern static int add(int a, int b);
        static void Main(string[] args)
        {
            int a = add(2, 3);
            
            Console.WriteLine(a);
            Console.ReadKey();
        }
    }
}

[DllImport(“D:\Desktop\Dll1\Debug\Dll1.dll”)] 里的路径为动态链接库的完全路径。
定义的外部静态函数函数名称必须与dll文件里的函数名称一致。

报错及其解决办法:
错误提示:System.BadImageFormatException:“试图加载格式不正确的程序。 (0x8007000B)”
问题点:32位程序调用了64位dll文件。
解决办法:在配置管理器里将应用程序与dll文件的配置改为一致。(Any CPU)为64位程序。

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值