C#引用C++开发的DLL

C#语言使用方便,入门门槛较代,上手容易,而且语法与C,java有很相似的地方,IDE作的也好,通用性好,是MS下一代开发的主要力量.可是其开源代码较少,类库不是十分完美,在架构方面还有一些须要作的工做.java

C++写的程序占用内存较小,直接对内存或者文件操做,所以一些关键的步骤或者一些最内层的循环在必定程序上还须要依赖C++.ios

 下面我作一些简单的例子架构

 C++编写DLL函数

QpHelper.hspa

#pragma once
class QpHelper
{
public:
    // Returns a + b
    // 设置为导出函数,并采用C风格。函数前加extern "C" __declspec(dllexport)
    // 定义函数在退出前本身清空堆栈,在函数前加__stdcall。
    static __declspec(dllexport) int __stdcall add(int a, int b);

    // Returns a - b
    static __declspec(dllexport) int __stdcall sub(int a, int b);
};

QpHelper.cppcode

#include "QpHelper.h"

int QpHelper::add(int a, int b)
{
    return (a + b);
}

int QpHelper::sub(int a, int b)
{
    return (a - b);
}

extern "C" __declspec(dllexport) int Add(int a, int b)
{

    return a + b;
}

 C++调用C++ DLLblog

 Test.cpp内存

// Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "QpHelper.h"
#include <iostream>
using namespace std;

// 静态方式调用DLL
#pragma comment(lib,"MyDllDemo.lib")

int main()
{
    QpHelper qpHelper;

    int result = qpHelper.add(4, 5);

    cout << qpHelper.add(4, 5) << endl;

    cout << qpHelper.sub(4, 5) << endl;

    return 0;
}

运行效果:开发

C#调用C++ DLLstring

using System;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Program
    {

        [DllImport("MyDllDemo.dll", EntryPoint = "Add", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Add(int a, int b); //DllImport请参照MSDN

        static void Main(string[] args)
        {
            Console.WriteLine(Add(1, 2));
            Console.Read();
        }
    }
}

运行效果:

相关文章
相关标签/搜索