http://www.cnblogs.com/Kennytian/p/3837405.html
最近接到一个需求,需要在WP里调用一个C语言写的DLL,并且说Android和iOS都可以,问我WP是否可以这样? 我说我调研一下,就有了下面的文章。
在传统C# WinForm 里调用Win32 DLL都不容易(可能用惯了C#),要用P/Invoke,然后DllImport什么什么,那WP里不是更麻烦?
先看看网上有没有可用的文章,结果还真找到devdiv中的文章,但其中有两处错误,所以我fix bug并且整理一下,然后展示给大家。
1.1、建立"模拟"C语言生成DLL的工程
1.2、创建好project后, 就看到两个与之相同名称的文件
1.3、在.h文件里写入
#pragma once extern "C" int _declspec(dllexport)Multiplication(int i, int j);
1.4、在.cpp文件里写入
#include "pch.h" #include "CalculatorDynamicLinkLibrary.h" int Multiplication(int i, int j) { int calc = i * j; return calc; }
1.5、编译这个project,在solution文件夹找到Debug,然后就能看到我们模拟生成的DLL
2.1、创建 C++ Windows Runtime Component 项目
2.2、创建好project后, 就看到两个与之相同名称的文件
2.3、在.h文件里写入
#pragma once #include <collection.h> #include <../CalculatorDynamicLinkLibrary/CalculatorDynamicLinkLibrary.h> namespace CalculatorInvoke { public ref class CalculatorInvoker sealed { public: CalculatorInvoker(); int Mult(int i, int j); }; }
2.4、在.cpp文件里写入
#include "pch.h" #include "CalculatorInvoke.h" using namespace CalculatorInvoke; using namespace Platform; CalculatorInvoker::CalculatorInvoker() { } int CalculatorInvoker::Mult(int i, int j) { return Multiplication(i, j); }
如果这时你着急编译,肯定会出错,不信就试试,呵呵!
2.5、在component project上,右键属性,找到设置Linker,在Additional Dependencies里填写第一个project的lib文件
devdiv网站是教的是设置.dll文件,我试了会报错
2.6、设置General,这里一定不能错,不然就会报找不到.lib文件。devdiv教的是指向绝对路径,如果把项目移到别的目录下还会报找不到.lib路径。
点Additional Library Directories 的下拉,再点Edit,就弹出如下窗口
Tips:关于类似”$(SolutionDir)“的用法,已经在链接3中给出了,列举比较详情,感谢作者!
3.1、创建 Windows Phone 项目,这里是大家最熟悉的部分了
3.2、添加引用Windows Phone Component项目,或者后期引用Windows Phone Component生成出来的DLL也行。
3.3、添加Win32 DLL文件到Windows Phone项目中,并在属性里设置为conent, copy always。
3.4、添加WP里C#的代码
private void CalculateRsult(object sender, System.Windows.Input.GestureEventArgs e) { if (string.IsNullOrWhiteSpace(input1.Text) || string.IsNullOrWhiteSpace(input2.Text)) { MessageBox.Show("输入框不能为空!", "友情提示", MessageBoxButton.OK); return; } CalculatorInvoker calculator = new CalculatorInvoker(); int i = Convert.ToInt32(this.input1.Text); int j = Convert.ToInt32(this.input2.Text); int result = calculator.Mult(i, j); this.txtResult.Text = string.Format("{0}", result); }
编译步骤:先CalculatorDynamicLinkLibrary,再CalculatorInvoker,最后CalculatorApp
3.5、计算结果
参考文档:
http://www.devdiv.com/forum.php?mod=viewthread&tid=135252
http://www.jarredcapellman.com/2012/11/03/how-to-get-c-winrt-in-a-windows-phone-8-application/
http://www.cnblogs.com/lidabo/archive/2012/05/29/2524170.html
相关推荐
控件中的tiles链接到web站点在你的博客中使用这个控件可以表达你对WP7的喜爱。 Windows Phone Blog Menu is a Silverlight navigation control that looks like a Windows Phone 7. The live tiles in the control ...
ituzi手机助手demo源码只是简单的电脑与手机初步建立连接,获取iphone基本信息,其他功能开发中 使用前请检查itunes是否已安装64位版本,我使用的...实在不行,可以自己改为直链接dll所在文件夹直接调用dll 2022.4.10
环境:Windows8.1+VS2013Ultimate+Windows phone8 SDK +Emulator WVGA 512MB Windows phone8 异步调用WCF服务,模拟器上实现成功。步骤超级详细!
Windows Phone 7国人开源项目 - WeatherCN
Windows Phone 7 中ListBox的使用
[Packt Publishing] Windows Phone 8 游戏开发教程 (英文版) [Packt Publishing] Windows Phone 8 Game Development (E-Book) ☆ 图书概要:☆ A practical guide to creating games for the Windows Phone 8 ...
Windows Phone手机ROM制作工具
Windows Phone SDK 7.1.1 更新在现有的 Windows Phone SDK 7.1 的基础上提供了更多功能。使用此更新,您可以更加轻松地开发可在 256 MB 设备上运行的优化应用程序和游戏。此更新包括新的 Windows Phone 仿真程序 256...
Windows Phone(简称:WP)是微软发布的一款手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。微软公司于2010年10月11日晚上9点30分正式发布了智能手机操作系统Windows ...
对Windows Phone 7应用程序生命周期的深度剖析,在与硬件进行交互和使用Expression Blend来创建更丰富的用户界面方面提供的建议,这些都有助于你学习创建独特而又实用的Windows Phone 7应用程序。
内容提要: 本书对WindowsPhoneXNA游戏开发的流程进行了详细的讲解,对其核心内容和开发技巧进行了深入的说明。...本书还针对WindowsPhone8的新特性以及如何将WindowsPhone7游戏向WindowsPhone8上迁移做了详细的说明。
windows phone 7系统的完美中文输入法,解决大家中文输入的烦恼,当然不是轻易就能拿到的啦,10分,10分不多呀!
你正在开发Windows Phone程序的时候, 当你需要添加日历控件的时候,你发现在基本工具箱里面没有你想要的空间,并且也没有功能类似可以替代的控件。 Visual Studio Windows Phone标准控件库 看上面的截图,你会注意到...
Android、iPhone、Windows Phone手机网页及网站设计 最佳实践与设计精粹 pdf扫描版
此项目会根据您的 Windows Phone 8 项目中的资源文件 (.resx) 自动生成 AppResLib.dll 和 .mui 文件。 它将从您的 .resx 文件中提取 3 个字符串: 100 来自 ApplicationDisplayName 101 来自应用程序描述 102 来自...
windows phone 7 自定义 输入法
windows phone管理工具用户wp8智能机,只需要将windows phone.exe在PC端运行并连接手机,就可以在PC端浏览操作手机SD卡中的文件。
Windows Phone 7 高级编程 Windows Phone 用户体验设计准则 Windows+Phone7完美开发征程 Windows-Phone-7-UI设计及人机交互指南 wp7 官方中文教程
Windows Phone 概述,Windows Phone 概述,Windows Phone 概述,Windows Phone 概述
Windows Phone 开发中使用SQL CE数据库实例