100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 在一个解决方案中用C#测试调用C++ DLL

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

时间:2022-05-16 10:44:27

相关推荐

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

VS,在解决方案中新建一个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 ponentModel;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了;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。