接下來介紹影像處理提取特徵,所以首先要先做好環境設定,這次介紹如何呼叫dll來Debug。
1.選擇DLL和空專案。
2.設定支援CLR讓.NET可呼叫。
3.創建一個class和一個寫入檔案的函數。
Library.h
#pragma once
#ifndef LIBRARY_H
#define LIBRARY_H
#include <fstream>
#include <string>
class Library
{
public:
Library();
~Library();
void Write(const char* str);
private:
const char* LOG_FILE;
std::fstream _fwLog;
};
#endif // !LIBRARY_H
4.實作函數。
Library.cpp
#include "Library.h"
Library::Library()
{
LOG_FILE = "D:\\Log.txt";
_fwLog.open(LOG_FILE, std::ios::app);
}
Library::~Library()
{
_fwLog.close();
}
void Library::Write(const char* str)
{
_fwLog << str;
}
5.匯出DLL函數,呼叫時為mndtWrite。
MNDTLibrary.cpp
#ifdef MNDTLIBRARY_EXPORTS
#define MNDTLIBRARY_API __declspec(dllexport)
#include "Library.h"
extern "C" MNDTLIBRARY_API void mndtWrite(const char* msg)
{
Library lib;
lib.Write(msg);
}
#else
#define MNDTLIBRARY_API __declspec(dllimport)
#endif
6.我這邊使用x64編譯。
1.設定unsafe(後面會使用到指標來傳資料),和x64編譯。
2.創建class呼叫C++匯入函數使用,這邊我指定路徑讀取C++編譯的DLL。
MNDTLibrary.cs
class MNDTLibrary
{
private const string DLL_PATH = @"D:\Visual Studio 2013 Project\Projects\MNDTLibrary\x64\Debug\MNDTLibrary.dll";
[DllImport(DLL_PATH)]
private static extern void mndtWrite(string msg);
public void Write(string msg)
{
mndtWrite(msg);
}
}
3.呼叫Write寫入D:/Log.txt。
Form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
MNDTLibrary mndt = new MNDTLibrary();
mndt.Write("Hello World");
}
}
4.我這邊使用x64編譯。
Debug設定只需要在C++ Dll檔那邊設定C#編譯出來的exe路徑,按下Debug即可。
1.設定位置。
接下來要介紹一些影像的色彩轉換,這篇文獻因為有點久遠忘記參考哪篇所以這次沒打文獻請見諒。