vs2013 c#调用c++ dll------实例托管的PInvoke签名与非托管的目标签名不匹配问题以及解决。

本文介绍了在VS2013中使用C#调用C++DLL时遇到的‘托管的PInvoke签名与非托管的目标签名不匹配’问题。通过分析错误实例代码,提出了两种解决方案:修改C#的DllImport声明添加CallingConvention参数或在C++DLL导出函数前声明__stdcall。正确修改调用约定后,成功调用DLL并指出了DLL导入路径的注意事项。
摘要由CSDN通过智能技术生成

首先自己用vs创建一个c++ dll,然后用depends查看导出的函数,如图:
这里是自己写的测试dll,下面有两个函数,创建c++dll的方法查看这篇博客:
https://blog.csdn.net/Alan_Program/article/details/93172050
在这里插入图片描述
以下是错误实例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;   //dllimport需要的头文件

namespace csCallCPPDllDemo
{
    class Program
    {
        [DllImport(@"MyMath.dll", EntryPoint = "my_add", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.stdcall)]
        //[DllImport(@"E:\VS\VS_project\vs2013project_cs\csCallCPPDllDemo\csCallCPPDllDemo\testDll\MyMath.dll")]
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值