C#調用c++的標準動態鏈接庫dll-創新互聯

一、dll文件的c++制作
1、首先用vs2005建立一個c++的dll動態鏈接庫文件,這時,
// DllTest.cpp : 定義 DLL 應用程序的入口點。
//

#include "stdafx.h"
//#include "DllTest.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
                      DWORD  ul_reason_for_call,
                      LPVOID lpReserved
          )
{
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif
這段代碼會自動生成,
2、自己建一個DllTest.h的頭文件,和DllTest.def的塊聲明文件。
其中頭文件是為了聲明內部函數使用。塊聲明主要是為了在dll編譯成功后固定好方法名。別忘記添加#include "DllTest.h"
3、在DllTest.h中加入如下代碼
#ifndef DllTest_01
#define  DllTest_01
#define EXPORT extern "C" __declspec(dllexport)
//兩個參數做加法
EXPORT int _stdcall Add(int iNum1=0,int iNum2=0);
//兩個參數做減法
EXPORT int _stdcall Subtraction(int iNum1=0,int iNum2=0,int iMethod=0);
#endif
4、在DllTest.def中加入如下代碼
LIBRARY    "DllTest"
EXPORTS
  Add
  Subtraction
5、在DllTest.cpp中寫好代碼為
// DllTest.cpp : 定義 DLL 應用程序的入口點。
//

#include "stdafx.h"
#include "DllTest.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
                      DWORD  ul_reason_for_call,
                      LPVOID lpReserved
          )
{
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

//加函數
int APIENTRY Add(int a,int b)  // APIENTRY  此關鍵字不可少
{
  return (a+b);
}
//減函數
int APIENTRY Subtraction(int a,int b,int i)
{
  if(0==i)
    return (a-b);
  else
    return (b-a);
}
6、這樣編譯生成就可以得到對應的DllTest.dll的文件了
二、C#調用dll文件
1、創建一個c#的控制臺程序(當然其他也沒有問題),自動生成以下代碼
using System;
using System.Collections.Generic;
using System.Text;
//using System.Runtime.InteropServices;

namespace CSharpIncludeC__Dll
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
2、添加命名空間using System.Runtime.InteropServices;
3、若要引用dll文件,首先吧dll文件自行拷貝到bin\debug,文件夾下,沒有的話,先編譯一下。
4、添加屬性
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Add(int iNum1, int iNum2);
5、最終產生代碼
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace CSharpIncludeC__Dll
{
    class Program
    {
        [DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
        static extern int Add(int iNum1, int iNum2);

        [DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
        static extern int Subtraction(int iNum1,int iNum2,int iMethod);

        static void Main(string[] args)
        {
            int iValue = Add(1, 2);
            Console.WriteLine(iValue);
            iValue = Subtraction(1, 2, 1);
            Console.WriteLine(iValue);
            Console.Read();
        }
    }
}
6、生成項目運行就可以了,結果是3和1

創新互聯公司作為成都網站建設公司,專注重慶網站建設公司、網站設計,有關企業網站設計方案、改版、費用等問題,行業涉及木托盤等多個領域,已為上千家企業服務,得到了客戶的尊重與認可。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前名稱:C#調用c++的標準動態鏈接庫dll-創新互聯
文章位置:http://m.kartarina.com/article34/egipe.html

成都網站建設公司_創新互聯,為您提供虛擬主機品牌網站建設手機網站建設關鍵詞優化網站內鏈網站維護

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 亚洲精品无码99在线观看| 无码中文字幕av免费放| 中文字幕无码日韩欧毛| 无码VA在线观看| 免费无码国产V片在线观看| 亚洲人成无码网WWW| 久久精品无码专区免费青青| 久久精品无码一区二区三区不卡| 国产无码网页在线观看| 在线观看无码不卡AV| 久久久无码精品亚洲日韩软件| 久久亚洲精品无码VA大香大香| 国产高清不卡无码视频| 久久亚洲AV成人无码| 日韩成人无码中文字幕| 午夜无码性爽快影院6080| 无码GOGO大胆啪啪艺术| 亚洲精品无码专区在线在线播放| 亚洲熟妇无码AV不卡在线播放| 国产精品va无码一区二区| 人妻无码一区二区三区| 无码av免费毛片一区二区| 国产午夜精品无码| 国产精品无码专区在线观看| 亚洲精品无码中文久久字幕| 无码午夜人妻一区二区三区不卡视频| 日韩乱码人妻无码中文视频| 永久免费AV无码国产网站| 久久水蜜桃亚洲av无码精品麻豆 | 无码视频在线观看| 东京无码熟妇人妻AV在线网址| 久久久无码精品人妻一区| 精品无码AV无码免费专区| 无码人妻久久一区二区三区免费 | 久久久久亚洲精品无码蜜桃| 成人午夜精品无码区久久| 国产仑乱无码内谢| 人妻少妇无码精品视频区| 国产AV无码专区亚洲AV手机麻豆| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 人妻少妇伦在线无码|