在一个解决方案中用C#测试调用C++ DLL
生活随笔
收集整理的這篇文章主要介紹了
在一个解决方案中用C#测试调用C++ DLL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 检查点队列和HASH Bu
- 下一篇: 各种Oracle常见操作