原文链接: 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. android Splashy Flash小游戏

    今年刚開始学习android,自己在寝室捎带学习了下做APP,因为是刚開始学习,这个游戏仅仅注重了游戏的实现,实现了大概功能后.也没有实现游戏的细节,像分数图片的显示等.也没有注意代码的结构.一个字就 ...

  2. linux c 常常混淆的概念

    指针函数 and 函数指针 指针函数是指带指针的函数,即本质是一个函数.函数都有返回类型(假设不返回值,则为无值型),仅仅只是指针函数返回类型是某一类型的指针. 定义格式 类型名 *函数名(函数參数列 ...

  3. 转载:tar 解压缩命令~

    转载自:http://blog.csdn.net/dunyanan1/article/details/38869059tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文 ...

  4. Linux下IP等网络配置

    Linux下IP等网络配置: 我所知道一共三种方式,下面简单介绍(注意:网络配置必须”root管理员“登录才能进行配置). 一 1.首先在命令行输入[ifconfig]命令,可看到相关网络信息,其中” ...

  5. C#实现按键精灵的'找图' '找色' '找字'的功能

    http://www.cnblogs.com/JimmyBright/p/4355862.html 背景:游戏辅助功能通常使用按键精灵编写脚本,按键精灵的最大卖点就是能够找到画面中字,图,色,这对于模 ...

  6. Windows Azure 免费初体验 - 创建部署网站

    前几天在看到有个学Windows Azure课程,送Windows Azure的活动,课程地址:http://www.microsoftvirtualacademy.com/ 在活得体验资格后,就迫不 ...

  7. Permutation Descent Counts(递推)

    1968: Permutation Descent Counts Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb  ...

  8. 《UNIX网络编程》 -- 第五章

    str_cli 和 str_echo 函数 需要先弄清楚 3.9 readn.writen 和 readline 函数 str_cli void str_cli(FILE *fp, int sockf ...

  9. Printing tools 自定义模板打印的实现

    #ArcGIS for Server 自定义打印两种方法 友好阅读版本: http://gishub.info/2013/09/17/printingtools/ ## 前言使用web打印会遇到中文乱 ...

  10. netty http客户端从web服务器获取消息遇到的HttpChunk问题

    有时候,Web服务器生成HTTP Response是无法在Header就确定消息大小的,这时一般来说服务器将不会提供Content-Length的头信息,而采用Chunked编码动态的提供body内容 ...