VS2015,在解决方案中新建一个C++ DLL项目,一个C# Winform项目;

dllmain.cpp;

#include "stdafx.h"BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;
}

这个是自动生成;case DLL_xxxx_xxxx,这几个是DLL消息;

stdafx头文件和C文件不用管;

DllTest2.cpp里面添加3个函数;

#include "stdafx.h"
#include "DllTest2.h"
#include <string.h>DllTest2_API int __stdcall Add(int a, int b)
{return a + b;
}DllTest2_API int __stdcall Multitwo(int a, int b)
{return a * b;
}DllTest2_API char __stdcall getc1(char c1)
{return c1;
}

DllTest2.h里面为三个函数添加导出说明;说明此dll导出的3个函数;

#define DllTest2_API __declspec(dllexport)
EXTERN_C DllTest2_API int __stdcall Add(int a, int b);EXTERN_C DllTest2_API int __stdcall Multitwo(int a, int b);EXTERN_C DllTest2_API char __stdcall getc1(char c1);

C#项目进行调用测试;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;namespace test2
{public partial class Form1 : Form{[DllImport(@"G:\xxxx\VCWorkspace\DllTest2\Debug\DllTest2.dll")]extern static int Add(int a, int b);[DllImport(@"G:\xxxx\VCWorkspace\DllTest2\Debug\DllTest2.dll")]extern static int Multitwo(int a, int b);[DllImport(@"G:\xxxx\VCWorkspace\DllTest2\Debug\DllTest2.dll")]extern static char getc1(char c1);public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){int c = Add(100, 67);textBox1.Text = textBox1.Text + c.ToString() + Environment.NewLine;textBox1.Text += Environment.NewLine;}private void button2_Click(object sender, EventArgs e){int c = Multitwo(99, 7);textBox1.Text = textBox1.Text + c.ToString() + Environment.NewLine;textBox1.Text += Environment.NewLine;}private void button3_Click(object sender, EventArgs e) //char 测试{char c1 = 'f';char d1 = getc1(c1);textBox1.Text = textBox1.Text + d1 + Environment.NewLine;textBox1.Text += Environment.NewLine;}}
}

生成解决方案;此处C#调用写的是DLL生成的绝对路径;C#不用引用DLL项目;每次修改了dll代码,重新生成解决方案;

启动C#项目;可以测试调用C++ DLL了;

在一个解决方案中用C#测试调用C++ DLL相关推荐

  1. C# 调用C++ dll 返回char*调用方式(StringBuilder乱码)

    // CDLLDemo.cpp : 定义 DLL 应用程序的导出函数. // #include "stdafx.h" #include "string.h" # ...

  2. electron通过edge-js调用TSCLIB.dll 打印卡白屏或退出的解决方案

    软件版本: 阅读坑记需谨慎,版本要看仔细. "node":"v14.16.0", "electron": "^13.0.0&quo ...

  3. C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针

     C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针 在这个系列的"C#调用C++DLL的小总结6---C++Dll中指针的释放问题 "中曾经详细说过类似的问 ...

  4. c#调用c语言的自定义函数,[转]在C#中调用C语言函数(静态调用Native DLL,Windows Microsoft.Net平台)...

    对于不太了解.Net的人,如果想要了解.Net,我必须给他介绍P/Invoke.P/Invoke是什么呢?简单地说,就是在.Net中调用本地代码(Native code)的一种解决方案.所谓" ...

  5. c#利用SWIG调用c++dll学习总结【转】

    开发环境: 操作系统:windows 7 IDE:Microsoft Visual Studio Professional 2015 SWIG: 3.0.12 swig的介绍 详细介绍可看官网,一下贴 ...

  6. VC MFC C++ MQTT VC编译MQTT VC调用MQTT dll eclipse-paho-mqtt

    VC MFC C++ MQTT VC编译MQTT VC调用MQTT dll eclipse-paho-mqtt JS HTML Web端使用MQTT通讯测试 Android Studio MQTT 使 ...

  7. 易语言如何调用c dll文件,易语言调用C++写的DLL

    直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误. 解决方案很简单,易语言声明DLL函数时"在库中对应命令名&q ...

  8. Electron-vue开发桌面应用调用TSCLIB.dll(tsc标签打印机连接库)

    最新,最终解决方案http://t.csdn.cn/szQRy 原因:要做个防伪标签打印软件,打印数据是来自服务器.最开始用的是JavaScript调用TSC来做打印(只能用IE浏览器,使用人员总会无 ...

  9. C#调用C++DLL类的方法

    C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题.     C++ ...

最新文章

  1. openstack对接华为存储
  2. 李洪强漫谈iOS开发[C语言-038]-if else if语句
  3. java aio聊天_JAVA aio简单使用
  4. 创下新的纪录 京东618累计下单金额超3438亿元
  5. Node开发知识概括
  6. python进阶12并发之八多线程与数据同步
  7. 腾讯社招 —— 应用宝后端工程师-电话面试
  8. 程序员的世界有 10 种人,你是哪一种?
  9. 从雅迪赞助FIFA世界杯透视体育营销趋势
  10. G415,到了徐州,车厢空了
  11. Python]网络爬虫
  12. esp8266开发入门教程(基于Arduino)——环境安装
  13. MariaDB 安装与启动 使用MySQL
  14. 企业上云是什么意思?企业上云的好处是什么?
  15. 斐讯音箱控制扫地机器人_斐讯大能X3扫地机器人首批测试,这回真没花一分钱!...
  16. 设计模式-2-抽象工厂方法
  17. 变形菌门扩张——肠道微生态失调和炎症肠病的潜在特征
  18. 高等组合学笔记(三): 间隔排列,投票问题,圈集排列组合与生成函数简介
  19. SIM7600CE GSM/UMTS/LTE天线设计指南
  20. 使用STL给选手打分

热门文章

  1. CTFshow php特性 web97
  2. CTFshow 信息收集 web16
  3. hdu2973 YAPTCHA
  4. SDUT_2119 数据结构实验之链表四:有序链表的归并
  5. 计算机技术停滞,究竟什么原因让科技停滞不前呢?
  6. ML_Multiple Linear Regression
  7. python编写直角三角形边长公式_304不锈钢的重量计算公式,留着总有用处
  8. (二)图像处理技术概述
  9. android 字符串,textview
  10. CentOS6.6上进程挂起的诡异问题和处理