Step1:加入一個c++的win 32Console App專案,名稱為SysAlgorithm,並記得選擇為DLL與空專案。
SysAlgorithm.cpp:
#include "SysAlgorithm.h"
Calculator::Calculator()
{
}
Calculator::~Calculator()
{
}
int Calculator::add(int a, int b)
{
return(a + b);
}
int Calculator::subtract(int a, int b)
{
return(a - b);
}
SysAlgorithm.h:
#pragma once
#ifndef SYSALGORITHM_H
#define SYSALGORITHM_H
#include <fstream>
#include <string>
class Calculator
{
public:
Calculator();
~Calculator();
int add(int a, int b);
int subtract(int a, int b);
};
#endif // !SYSALGORITHM_H
Extern.cpp:
#pragma once
#ifndef SYSALGORITHM_H
#define SYSALGORITHM_H
#include <fstream>
#include <string>
class Calculator
{
public:
Calculator();
~Calculator();
int add(int a, int b);
int subtract(int a, int b);
};
#endif // !SYSALGORITHM_H
Extern.cpp:
#ifdef SYSALGORITHM_EXPORTS
#define SYSALGORITHM_API __declspec(dllexport)
#include "SysAlgorithm.h"
extern "C" SYSALGORITHM_API int add(int a, int b)
{
Calculator Calculator;
return Calculator.add(a, b);
}
extern "C" SYSALGORITHM_API int subtract(int a, int b)
{
Calculator Calculator;
return Calculator.subtract(a, b);
}
#else
#define SYSALGORITHM_API __declspec(dllimport)
#endif
在Extern.cpp中,SYSALGORITHM_EXPORTS,綠色字要跟專案名稱一樣才行
Step3:修改專案屬性設定執行環境為x64與可以支援clr,如下圖
Step4:新增一個 c#的Console App專案,跟介面有關所以名稱設為SysUI,如下圖
Step5:修改Form1.cs內容
Form1.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace SysUI
{
public partial class Form1 : Form
{
[DllImport("SysAlgorithm.dll", EntryPoint = "add", CallingConvention = CallingConvention.Cdecl)]
private static extern int add(int a, int b);
[DllImport("SysAlgorithm.dll", EntryPoint = "subtract", CallingConvention = CallingConvention.Cdecl)]
private static extern int subtract(int a, int b);
public Form1()
{
InitializeComponent();
label1.Text = add(3, 5).ToString();
label2.Text = subtract(3, 5).ToString();
}
}
}
-----------------------------------------
在Form1.cs中,要加入using System.Runtime.InteropServices,才能讀取外部dll檔案,並且加入參考,說明dll檔的位置,如下圖所示。Step6:最後!!修改專案屬性設定執行環境為x64,並將C#專案設成初始啟動專案,不然會直接開成c++專案,而因為dll本身是無法被直接啟動,所以會跳錯喔!!
關於接DLL檔回傳值部分,可以參考C# 使用C++ DLL檔(回傳值)
沒有留言:
張貼留言