原文链接: 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的更多相关文章

  1. Cocos2d-x项目移植到WP8系列之二:开篇

    原文链接: http://www.cnblogs.com/zouzf/p/3970130.html 开发环境一笔带过吧,主板和CPU要支持虚拟化技术,要开启才行,装个64位win8.1系统,win8不 ...

  2. Cocos2d-x项目移植到WP8系列之三:C++和C#的交互

    原文链接: http://www.cnblogs.com/zouzf/p/3971021.html 上一篇提到工程使用 XAML 和 Direct3D 项目模板 是因为要涉及到C++和C#的交互,微软 ...

  3. Cocos2d-x项目移植到WP8系列之一:前传

    原文链接: http://www.cnblogs.com/zouzf/p/3969993.html 许久没动笔了,随想一直都有动笔的想法,但拖来拖去,归根到底还是一个懒字吧 .发现人的惰性真是太强大了 ...

  4. Cocos2d-x项目移植到WP8系列之九:使用自定义shader

    本文原链接:http://www.cnblogs.com/zouzf/p/3995132.html 有时候想得到一些例如灰度图等特殊的渲染效果,就得用到自定义shader,关于shader的一些背景知 ...

  5. Cocos2d-x项目移植到WP8系列之八:CCLabelTTF显示中文不换行

    原文链接: http://www.cnblogs.com/zouzf/p/3985330.html 在wp8平台上,CCLabeTTF显示中文不会自动换行,看了下源码,原来底层的实现是根据text的空 ...

  6. Cocos2d-x项目移植到WP8系列之四:文件操作

    原文链接: http://www.cnblogs.com/zouzf/p/3972457.html 读写文件Cocos已经用fopen fwrite来做好了,这里说的主要是文件和文件夹的创建.删除.判 ...

  7. Cocos2d-x项目移植到WP8系列之七:中文显示乱码

    原文链接:http://www.cnblogs.com/zouzf/p/3984628.html C++和C#互调时经常会带一些参数过去例如最常见的字符串,如果字符串里有中文的话,会发现传递过去后变成 ...

  8. Cocos2d-x项目移植到WP8系列之五:播放MP3

    原文链接: http://www.cnblogs.com/zouzf/p/3972549.html 这一块的细节还是不太了解,只是东凑西拼能跑起来而已 1.网上下载lamb库 生成需要的lib库,详情 ...

  9. Cocos2d-x项目移植到WP8小记

    Cocos2d-x项目移植到WP8小记 作者: K.C. 日期: 10/24/2013 Date: 2013-10-24 00:33 Title: Cocos2d-x项目移植到WP8小记 Tags: ...

随机推荐

  1. OC对象给分类加入属性

    OC对象中不能给分类加入属性.可是在实际开发中.常常为了更好的性能须要给分类加入属性,那么 加入的属性不能有默认的成员变量.须要我们自己实现set和get方法,要用到执行时 例如以下: #import ...

  2. Mongo同步数据到Elasticsearch

    个人博客:https://blog.sharedata.info/ 最近需要把数据从Mongo同步到Elasticsearch环境:centos6.5python2.7pipmongo-connect ...

  3. JQuery实现动态生成树形菜单

    jQuery实现动态生成树形菜单 有一个需求:菜单导航条需要依据不同的权限动态提取出来.计划是将功能模块与用户权限之间的关系保持到一个配置表中.所以功能菜单的话就需要动态提取出来再显示.借助jquer ...

  4. Android UI开发第二十九篇——Android中五种常用的menu(菜单)

    Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...

  5. CodeIgniter框架——函数(时间函数、装载函数)剖析+小知识点

    连接数据库: 格式: mysql -h主机地址 -u用户名-p用户密码 数据库的提示符:mysql> 退出数据库: exit(回车) 知识点积累: 1.date_default_timezone ...

  6. 【BZOJ4176】Lucas的数论 莫比乌斯反演

    [BZOJ4176]Lucas的数论 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)) ...

  7. getFullYear 方法

    返回 Date 对象中用本地时间表示的年份值. dateObj.getFullYear() 必选项 dateObj 参数为 Date 对象. 说明要获取用全球标准时间 (UTC)表示的年份值,请使用 ...

  8. 不同格式的ip 统一转成ip列表

    支持以下格式的ip地址: 192.168.1.0/24 192.168.1.1-23 192.168.1.123 代码如下: package finder; import java.net.InetA ...

  9. MySQL中InnoDB存储引擎中的哈希算法

    InnoDB存储引擎使用哈希算法来对字典进行查找,其冲突机制采用链表方式,哈希函数采用除法散列方式.对于缓冲池页的哈希表来说,在缓冲池中的Page页都有一个chain指针.它指向相同哈希函数值的页的. ...

  10. HDFS涉及ACLs的命令

    What is ACL Hadoop中的ACL与Linux中的ACL机制基本相同,都是用于为文件系统提供更精细化的权限控制. 参考 HDFS ACLs: Fine-Grained Permission ...