针对个人的上一篇文章中提到的遇到的几个问题,做一下个人解答

DLL部署的问题,可以将DLL添加到工程中,属性中设置content为true,这样,部署目录下就会有这个文件。

需要说明的是,这个文件确实过去了,在PC上可以直接看到,在模拟器上我用遍历当前目录的函数查了一遍,文件确实存在

但是,如果DLL是普通的WIN32DLL,在模拟器上依然报文件找不到的异常,个人推断是,这个DLL不知道还引了什么东西,所以不能正常用。如果是UWP的DLL就可以

最终的解决方案是:DLL需要有源码,重新创建UWP的DLL工程,将源码移植过来,调整使可编译过,这样,可以在所有平台和设备上可以正常用

另外,还做了一步发布到商店前的验证,会提示一些API不该被调用,策略是在编DLL时加入宏WINAPI_FAMILY=WINAPI_FAMILY_APP试一下

此处的一些内容,参考了 http://www.cnblogs.com/nio-nio/p/3410180.html ,可以去看一下

个人有点自己的观点提一下,主要是第二部分中复用DLL的图,首先,还有一种途径是直接将DLL源码写到运行时组件中,其次,在倒数第二条路子中,C#应该是可以直接调DLL的,比如通过DLLIMPORT的方式,只不过接口写起来比较麻烦

最近在用C++/CX封运行时组件提供的接口,有几点需要记一下备忘:

运行时接口中需public的才能被外面看到并调用,而且必须要在命名空间中,不能全局,而且命名空间必须和工程名一致

运行时接口中,字符串参数用Platform::String^,和std::string的转换可参考 http://www.cnblogs.com/zouzf/p/3984628.html

运行时接口中,如果参数用到map或vector,在声明中需要用Windows::Foundation::Collections::IMap^这种类似格式,而在实现中去创建对象时,用ref new Platform::Collections::Map;

运行时接口中,遇到了想传对象指针,但是不是运行时对象,网上有人提到接口中参数用Platform::UIntPtr这种类型,和指针互转时用return reinterpret_castPlatform::UIntPtr*(&m_pObj) 或 Pointer m_pObj = *reinterpret_cast(&value);

代码中,枚举用public enum class Color
{Red = 1,
Green,};

代码中,异步编程时也比较简单,在异步接口中,返回值为Windows::Foundation::IAsyncAction^,或同命名空间下的其它类,区别在于是否有返回值,是否有进度等,接口的实现中,调用Concurrency::create_async(this{}来写一个lambda表达式,表达式里面做同步的操作就可以了,在外面调的时候,使用await调就可以了。
该处参考了示例: https://msdn.microsoft.com/zh-cn/library/windows/apps/hh755833.aspx
对应的大部分API可以在这查到: https://msdn.microsoft.com/en-us/library/windows/apps/jj207212(v=vs.105).aspx
https://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx

以上,此记

最新文章

  1. JavaScript中Array类型方法总结
  2. HDU 4605 Magic Ball Game (dfs+离线树状数组)
  3. 【bzoj2434-阿狸的打字机】AC自动机+fail树+优化
  4. android拦截短信并屏蔽系统的Notification
  5. 开始迈入Csharp的世界了
  6. HDOJ 1339 A Simple Task(简单数学题,暴力)
  7. Tsinghua dsa mooc pa1
  8. L2-002. 链表去重
  9. [bzoj4881][Lydsy2017年5月月赛]线段游戏
  10. iOS中 扫描二维码/生成二维码详解 韩俊强的博客
  11. spring配置文件注入到静态变量
  12. luogu P3128 [USACO15DEC]最大流Max Flow (树上差分)
  13. CentOS使用systemctl daemon-reload报错Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: Timeout was reached (g-io-error-quark, 24)解决办法
  14. 解决PowerDesigner 16 Generate Datebase For Sql2005/2008 对象名sysproperties无效的问题
  15. 洛谷1443 马的遍历【bfs】
  16. Appium+python自动化4-元素定位uiautomatorviewer
  17. uva-539-枚举
  18. java 中的线程池和线程 调用小demo
  19. nova rebuild
  20. MyBatis----延迟加载demo

热门文章

  1. Hadoop学习历程(二、配置)
  2. const int *p,int *const p区别(转)
  3. 再转一篇gtest1.6安装
  4. [工具]web开发时自动刷新网页:liveReload
  5. IOS 通过button获取cell
  6. Codeforces 573B Bear and Blocks
  7. 桌面上嵌入窗口(桌面日历)原理探索(将该窗口的Owner设置成桌面的Shell 窗口,可使用SetWindowLong更改窗口的GWL_HWNDPARENT,还要使用SetWindowPos设置Z-Order)
  8. Qt编程之对QGraphicsItem点击右键弹出菜单
  9. ios论坛
  10. BZOJ1638: [Usaco2007 Mar]Cow Traffic 奶牛交通