Cocos2d-x项目移植到WP8系列之六:C#工程使用C++的DLL
原文链接: http://www.cnblogs.com/zouzf/p/3984510.html
此时,一些大问题都被解决后,整个工程基本能跑起来了,最后一个大问题是:业务层是用Lua开发的,底层的源码对他们是不可见的,也就是需要把我们工程生成的各种DLL、lib、winmd文件拿出来然后再搭建一个开发环境给项目组使用,要求就是,每次底层改了什么只需要把对应的生成的lib、dll、winmd文件给他们替换就行了,而他们的开发环境里工程并不需要因此而变。嗯,但我们的工程大部分都是C++的,有DLL工程,也有lib工程,还有运行时工程,如何让C#用上这些工程的生成品?
原本我们的工程结构是这样的:C#工程 -> C++运行时工程 -> 我们的C++工程 -> Cocos的C++工程(如libCocos2d、libLua 、libCocosDenshion等),这里的工程的源代码对于业务层都是不可见的,只是把这些工程的生成结果如 lib、dll、winmd 文件给业务层使用,为什么C#工程对业务层也是不可见的呢?因为很多平台相关的功能是放到C#工程里实现的。
恩,我们加多一个C#工程,内容非常简单,简单到如果不需要做其他事情的甚至只有一句话:
NavigationService.Navigate(new Uri("/HelloCpp_PhoneLib;component/MainPage.xaml",UriKind.RelativeOrAbsolute));
是的,它只需要跳转到另一个C#工程(平台相关的功能在这个C#工程实现),现在,对我们而言,工程结构如下: C#页面工程(可以作为启动工程即可) -> C#库类工程 ->C++运行时工程 -> 我们的C++工程 -> Cocos的C++工程, 当然,对业务层而言,工程结构如何: C#页面工程 + DLL文件 + winmd文件,是的,这有一个工程。
那么,C#页面工程如何把各种C++工程的DLL、winmd、lib文件添加进去呢?
首先,把C#类库生成的DLL文件、C++运行时工程生成的DLL和winmd文件、C++动态库工程生成的DLL文件都拷到C#页面工程的根目录下,然后,
对于C#类库工程,它们生成DLL文件:C#页面工程通过工程里的 引用 -> 右键选择 添加引用 -> 浏览 ,选择中所需的DLL文件加入引用即可;
对于C++的运行时工程,它们生成DLL文件和winmd文件:C#页面工程通过工程里的 引用 -> 右键选择 添加引用 -> 浏览 ,选中所需的winmd文件加入引用即可,对应的DLL文件不需要理会;
对于C++的dll工程,它们生成DLL文件(如果生成有lib文件,不需要管):选择工程,右键 选择 添加 -> 现有项,选中所需的DLL文件加入工程即可;
对于C++的lib工程,它们只生成lib文件:lib文件不需要其他操作,lib工程的内容都被引用它的DLL工程所包含了;
至此,给业务层用的开发环境搭建好了。
PS:有种情况如下:F类在工程A里定义了,工程B引用了工程A,然后使用F类,编译没问题,但链接时却报错说 F类及它的方法 是未定义的外部符号,嗯,这个时候就应该检查一下工程A是不是DLL工程了,如果是的话,在F类前面加上: __declspec(dllexport) , 应该就可以解决问题了。特别是在其他平台下是静态库的工程,到了wp8平台却变成了动态库工程,记得加上。这坑略坑~~
原文链接: http://www.cnblogs.com/zouzf/p/3984510.html
Cocos2d-x项目移植到WP8系列之六:C#工程使用C++的DLL的更多相关文章
- Cocos2d-x项目移植到WP8系列之二:开篇
原文链接: http://www.cnblogs.com/zouzf/p/3970130.html 开发环境一笔带过吧,主板和CPU要支持虚拟化技术,要开启才行,装个64位win8.1系统,win8不 ...
- Cocos2d-x项目移植到WP8系列之三:C++和C#的交互
原文链接: http://www.cnblogs.com/zouzf/p/3971021.html 上一篇提到工程使用 XAML 和 Direct3D 项目模板 是因为要涉及到C++和C#的交互,微软 ...
- Cocos2d-x项目移植到WP8系列之一:前传
原文链接: http://www.cnblogs.com/zouzf/p/3969993.html 许久没动笔了,随想一直都有动笔的想法,但拖来拖去,归根到底还是一个懒字吧 .发现人的惰性真是太强大了 ...
- Cocos2d-x项目移植到WP8系列之九:使用自定义shader
本文原链接:http://www.cnblogs.com/zouzf/p/3995132.html 有时候想得到一些例如灰度图等特殊的渲染效果,就得用到自定义shader,关于shader的一些背景知 ...
- Cocos2d-x项目移植到WP8系列之八:CCLabelTTF显示中文不换行
原文链接: http://www.cnblogs.com/zouzf/p/3985330.html 在wp8平台上,CCLabeTTF显示中文不会自动换行,看了下源码,原来底层的实现是根据text的空 ...
- Cocos2d-x项目移植到WP8系列之四:文件操作
原文链接: http://www.cnblogs.com/zouzf/p/3972457.html 读写文件Cocos已经用fopen fwrite来做好了,这里说的主要是文件和文件夹的创建.删除.判 ...
- Cocos2d-x项目移植到WP8系列之七:中文显示乱码
原文链接:http://www.cnblogs.com/zouzf/p/3984628.html C++和C#互调时经常会带一些参数过去例如最常见的字符串,如果字符串里有中文的话,会发现传递过去后变成 ...
- Cocos2d-x项目移植到WP8系列之五:播放MP3
原文链接: http://www.cnblogs.com/zouzf/p/3972549.html 这一块的细节还是不太了解,只是东凑西拼能跑起来而已 1.网上下载lamb库 生成需要的lib库,详情 ...
- Cocos2d-x项目移植到WP8小记
Cocos2d-x项目移植到WP8小记 作者: K.C. 日期: 10/24/2013 Date: 2013-10-24 00:33 Title: Cocos2d-x项目移植到WP8小记 Tags: ...
随机推荐
- 初窥ElasticSearch
初窥ElasticSearch 官网上面的,不知道讲的是什么.. youtube上面有一个start with,内容是在windows以下跑这个elastic search,然后用一个fidler工具 ...
- SlidingMenu官方实例分析4——AttachExample
AttachExample这个类没有继承BaseActivity,而是FragmentActivity,写到这好像感悟到了 为什么官方现在都推荐使用Fragment而不是Activity,因为Frag ...
- ios - 高效,准确的网络检测
//网络检测 // 1.创建网络监听者管理者对象 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager share ...
- MongoDB save()方法和insert()方法的区别
MongoDB save()方法和insert()方法的区别 首先看官方文档怎么说的 Updates an existing document or inserts a new document, d ...
- 根据funID,personID获取最新规划包项目相关信息
1.定义:根据funID,personID获取最新规划包项目相关信息(code projecttype(阶段) Pname(code+name) projectID) 项目表tbl_cfg_Proje ...
- Lucene建立索引搜索入门实例
第一部分:Lucene建立索引 Lucene建立索引主要有以下两步:第一步:建立索引器第二步:添加索引文件准备在f盘建立lucene文件夹,然后 ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task
问题: 你想要在整体的构建过程中加入自定义的task. 解决方案: 使用dependOn属性将你的任务插入 directed acyclic graph 讨论: 在初始化阶段,Gradle将任务根据依 ...
- Java格式化日期的三种方式
1)借助DateFormat类: public String toString(Date d) { SimpleDateFormat sdf = new SimpleDateFormat(“yyyy- ...
- iOS 横竖屏适配
关于横竖屏适配 也没做过,今天读别人的源码,遇到了.为了了解清楚,就系统的学习一下. 一 横竖屏方向枚举 关于横竖屏一共有三种枚举 UIInterfaceOrientation UIInterface ...
- Nuxt使用element-ui
废话不多说,在Nuxt中引入Nuxt其实很简单,分下面几步 一.安装element-ui依赖 打开nuxt项目以后,在Terminal中通过 npm i element-ui -S 即可安装eleme ...