Tag Archives: VS2008

CSharp using C++ DLL

ต่อเนื่องจาก C++ Dll Win32 Console Project

ในบทความนี้เป็นการใช้ C# เรียกใช้ DLL ที่เขียนจากภาษา C++

1. สร้างโปรเจ็กส์ C# เพื่อใช้งาน Dll ชื่อ CSConsole เป็นแบบ Console Application

2. สร้างโปรเจ็กส์ C# เพื่อใช้งาน Dll ชื่อ CSWinForm เป็นแบบ Windows Forms Application

เพิ่ม Code

using System;

using System.Collections.Generic;
using System.Linq;

using System.Text;

using System.IO;
using System.Runtime.InteropServices;

namespace CSConsole
{
    class Program
    {
        [DllImport("../../../Debug/CDll.dll")]
        public static extern int Calc(int no1, int no2);
        [DllImport("../../../Debug/CDll.dll")]
        internal static extern int _flushall();

        static void Main(string[] args)
        {
            int res;
            res = Calc(10, 20);
            Console.Write(res);
        }
    } 
}

เพิ่ม Code

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 CSWinForm
{
    public partial class Form1 : Form
    {
        [DllImport("../../../Debug/CDll.dll")]
        public static extern int Calc(int no1, int no2);
        [DllImport("../../../Debug/CDll.dll")]
        internal static extern int _flushall();

        public Form1()
        {
            InitializeComponent();

            int res;
            res = Calc(10, 20);
            MessageBox.Show(res.ToString());
        }
    }

ที่มา: Platform Invoke Tutorial

 

C++ Dll Win32 Console Project

1. สร้างโปรเจ็กส์ C++ แบบ Dll ชื่อ CDll เป็นแบบ Win32 Console Application > Dll

2. สร้างโปรเจ็กส์ C++ เพื่อใช้งาน Dll ชื่อ WinConsole เป็นแบบ Win32 Console Application > Console Application

เพิ่ม Code

// CDll.cpp : Defines the exported functions for the DLL application. // 
#include "stdafx.h"

extern "C" _declspec(dllexport) int Calc(int no1,int no2)
{
    int result;
    result = no1 + no2;
    return result;
}

เพิ่ม Code

// WinConsole.cpp : Defines the entry point for the console application. // 
#include "stdafx.h"

extern "C" _declspec(dllimport) int Calc(int no1,int no2);

int _tmain(int argc, _TCHAR* argv[])
{
    int res;
    res = Calc(10,20);
    printf("%d",res);

    return 0;
}

ให้โปรเจ็กส์ WinConsole ทำการ Add reference project ไปที่โปรเจ็กส์ CDLL

ที่มา: Creation of a Simple DLLWalkthrough: Creating and Using a Dynamic Link Library