码迷,mamicode.com
首页 > 编程语言 > 详细

编译生成C++导出函数dll,并在C#工程中测试

时间:2017-09-16 13:25:53      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:html   fine   string   ges   add   ati   system   lease   image   

编译生成过程:

1.建立dll工程

选择新建visual C++的

技术分享

 

这两个类型工程,都会出现下面界面,在这里设置生成dll:

技术分享

2.设置项目:

项目属性中设置:

技术分享

 

3.相关代码:

由于项目的名称是"TestCPPDLL",因此,会自动生成TestCPPDLL.h和TestCPPDLL.cpp两个文件,.h文件是要导出内容的声明文件,为了能清楚的说明问题,我们将TestCPPDLL.h和TestCPPDLL.cpp两个文件中的所有内容都删除,然后在TestCPPDLL.h中添加如下内容:

头文件:

#define TESTCPPDLL_API __declspec(dllexport)
EXTERN_C TESTCPPDLL_API int __stdcall Add(int a, int b);

源文件:

TESTCPPDLL_API int __stdcall Add(int a, int b)
{
    return a + b;
}

 

测试过程如下:

新建一个C#空工程项目,修改生成的main文件:

1.添加

using System.Runtime.InteropServices;

2.在静态方法中添加:

[DllImport(@"G:/VS13_Project/TestCPPDLL/Release/TestCPPDLL.dll", EntryPoint = "Add")]
extern static int Add(int a, int b);

具体如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Runtime.InteropServices; //加上这行

namespace testC
{
    class Program
    {
        [DllImport(@"G:/VS13_Project/TestCPPDLL/Release/TestCPPDLL.dll", EntryPoint = "Add")]
        extern static int Add(int a, int b);
        static void Main(string[] args)
        {
            int c = Add(1, 2);
            Console.Write(c);
            Console.Read();
        }
    }
}

 参考:http://jingyan.baidu.com/article/67508eb43f91869cca1ce49c.html

编译生成C++导出函数dll,并在C#工程中测试

标签:html   fine   string   ges   add   ati   system   lease   image   

原文地址:http://www.cnblogs.com/hpcpp/p/7530692.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!