您的位置:首页 > 编程语言 > C语言/C++

C#使用C/C++编译的动态链接库dll

2015-12-27 18:45 351 查看
注:需要有C/C++和C#基础,文章持续更新中…

引子:(看技术的请跳过)

会写这个博客原因在于耍android时总是碰到一堆流氓手机助手,至于怎么流氓我就不多说了,后来动了自己写一个手机助手的念头,不就是写代码嘛都和代码谈了五六年恋爱的单身汪了怕啥。最开始当然 从adb入手,最简单的就是将操作合成命令使用重定向I/O执行adb.exe解析adb.exe的输出,这种方式我在当我打开ide后我就放弃了,太low了。后来就想adb.exe肯定也是用一套api来做的,就尝试找了下,发现有adb的工程代码,于是乎跟着做了一个也编译成功了,不过编译出来也就是adb.exe这个东西,这个网上下载就有了何必编译呢,虽然有源码,可以修改一些,然后重新编译,然而是基于控制台的,用起来肯定不怎么样。重点来了,有源码我们何不拉出一些adb的api出来给winfrom使用?说干就干,开发环境VS2010,界面我选择C#(毕竟我认为MFC已经是被淘汰的东西了,VB.NET是学校玩的)!这里我是边上班边写这个工具边写博客,如果哪里写的不好你们TM来打我啊,哈哈!

创建lib工程:

新建win32项目



应用程序类型选择DLL



比较洁癖,我一般会删除预编译,这里可以不删除,不过后面加入adb还是要删除





添加adb_interface.cpp文件:

#include <stdio.h>

int helloWorld()
{
printf("hello world\n");

return 9527;
}


添加模块定义文件





点一下调试那个绿色三角形,这里会弹出一个无法运行的错误,不管它这里仅仅是为了生产一下dll文件。

创建winfrom项目



在from中拉一个label和一个button,双击button,编写如下代码



[DllImport(“E:\workspace\Visual Studio\ProMonkey\Debug\AdbDll.dll”)]

表示导入dll动态链接库,AdbDll.dll就是我们上面的win32项目生成的dll,这里直接使用绝对路径是为了方便演示,需要换成你自己的路径。

效果:



注:因为是winfrom,所以c++里的printf(“hello world\n”);是看不到的,如果想获取printf()的输出需要I/O重定向。

如果你是冲着标题来的,到这里已经结束了,C#何如使用C++编译的DLL不会继续深入,显然这不是一篇好的介绍如何使用DLL是文章当然我的目的也不在于此,后面将开始我的手机助手编写过程,具体会写成什么样的我现在也未可知,因为你现在看到的就是我目前的全部工程。

后续代码我会全部放到这个百度云盘的目录下,有需要的自己来下载

工程文件

可能出现的问题:

warning LNK4070的解决办法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: