小编ryf*_*059的帖子

如何在Visual Studio 2012中重命名解决方案,解决方案文件夹,项目文件夹,包/过滤器文件夹和vcxproj文件

我在游戏项目中遇到上述任何问题时遇到了问题.网上已经有很多答案,我查看了所有这些答案,但它们并不适用于我或有不同的情况.这是我的情况:

这是我的解决方案

这就是我的解决方案.我从改变项目名称X-Power,以Neo_Elements视觉工作室,其工作范围内.但它不会影响实际的物理文件夹.

.vcxproj文件的物理文件路径和名称是...\Neo_Elements\WorldScrollingGame\WorldScrollingGame.vcxproj.

.sln文件的物理文件路径和名称是 ...\Neo_Elements\X-Power.sln

我想做的事:

  1. 将解决方案重命名为Neo_Elements(因此.sln文件将相应更改)

  2. 将文件路径更改为 ...\Neo_Elements\Neo_Elements\...

  3. 将.vcxproj文件重命名为 Neo_Elements.vcxproj

所以在更改之后,.sln文件路径和名称应该是 ...\Neo_Elements\Neo_Elements.sln

.vcxproj文件路径和名称应该是 ...\Neo_Elements\Neo_Elements\Neo_Elements.vcxproj

解决方案和项目名称都将是 Neo_Elements

我做了什么:

  1. 在解决方案名称上用F2重命名Visual Studio中的解决方案.

发生了什么:

该项目不再构建并创建一堆编译错误,如下所示:

fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
fatal error C1083: Cannot open include file: 'resource.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我甚至没有更改物理文件夹,我不知道为什么找不到文件,丢失文件的位置对我来说似乎完全随机.(不仅是那些人\WorldScrollingGame还有更深层次的人.也有很多文件受到影响,但只找不到几个文件).当我试图将解决方案名称更改回X-Power原来时,事实证明我不能.它说"解决方案无法重命名,因为已经存在具有指定名称的解决方案文件",尽管事实上已经没有X-Power.sln了.尽管如此,我已经完全陷入困境,不得不从备份中恢复整个解决方案(或者在Windows资源管理器中手动更改.sln文件的名称).首次尝试失败.

然后我开始尝试在VS外部更改项目文件夹.

我做了什么:

我按照这个链接:关闭VS,在VS外部重命名项目主管,在文本编辑器中编辑.sln更改"X-Power", "WorldScrollingGame\WorldScrollingGame.vcxproj""X-Power", "Neo_Elements\WorldScrollingGame.vcxproj"(奇怪的是X-Power应该是Neo_Elements因为我在VS中编辑了项目名称,但不知何故它没有反映这里的更改,除非这个不是项目名称的反映,根据该链接绝不应该是这种情况.但我现在不想因为之前发生的事情而弄乱解决方案名称. …

visual-studio visual-studio-2012

10
推荐指数
3
解决办法
6417
查看次数

指针和&符号在C++中用const表示

可能重复:
声明指针; 类型和名称之间的空格左侧或右侧的星号?

我一直想知道什么是正确的位置*&.似乎C++对于放置这些标记的位置非常宽容.例如,我似乎指针和符号放在关键字的左右两侧或两个关键字的中间,但有时令人困惑的是它们似乎意味着相同的东西,特别是当与const

void f1(structure_type const& parameter)
void f2(structure_type const &parameter)

void f2(structure_type  const *sptr);
void f2(structure_type  const* sptr);
void f2(structure_type  const * sptr);
Run Code Online (Sandbox Code Playgroud)

这些例子并非详尽无遗.我在声明或传递给函数时到处看到它们.他们甚至意味着同样的事情吗?但是我也看到了put的情况*会影响哪个对象被称为指针(可能*是两个关键字之间的情况).

编辑:

int const *Constant
int const * Constant // this above two seem the same to me, both as pointer to a constant value
int const* Constant //  EDIT: this one seems the same as above. instead of a constant pointer

const int * Constant …
Run Code Online (Sandbox Code Playgroud)

c++ pointers const

8
推荐指数
1
解决办法
3333
查看次数

window.innerWidth = 0?

我正在制作一个动画画布网页.奇怪的是,每次我通过双击html文件启动网页时,画布几乎总是不正确的大小.我之前发过一个类似的问题:Canvas在加载时尺寸不正确但没有想要的答案.

经过大量调试后,我发现window.innerWidth这就是给我带来麻烦的.在window.innerWidth每次页面从双击启动了一个不正确的画布大小的HTML文件和结果时间返回0(有趣的画布大小是不完全为0,但有对象非常小的一个要在彼此的顶部渲染堆栈) ,但重新加载页面后(Ctrl + R)问题不再发生.我正在使用jQuery加载页面,这是我的代码:

HTML:

    <body>
        <canvas id="main_canvas"></canvas>
    </body>
Run Code Online (Sandbox Code Playgroud)

JS:

    $(document).ready(function() {

        var SCREEN_WIDTH = window.innerWidth-10,
            SCREEN_HEIGHT = window.innerHeight-10;

        if (window.innerWidth === 0) { alert("wtf? width = 0?");}

        var canvas = $('canvas')[0],
            context;

        init(); // use $(window).load(init) does not fix the problem

        function init() {

            if (canvas.getContext) {

                context = canvas.getContext('2d');
        animate(); // draw stuff
            }

            else {
                alert('Your browser does not support html5 canvas');
            }
        }
});
Run Code Online (Sandbox Code Playgroud)

正如你在这里看到的那样,我已经$(docuemnt).ready(function())用来确保事情被加载,但是从链接http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/作者建议该文档即使所有图形尚未加载,加载HTML文档并且DOM准备就绪时就已执行ready事件. …

javascript jquery html5 canvas

6
推荐指数
2
解决办法
4936
查看次数

我可以从浏览器更改视图页面源部分的大小或字体吗?

有一个小问题可能会不时地惹恼我(如果有其他人有同样感觉的话).每次我从任何浏览器使用视图页面源时,文本总是变得丑陋和小(我的计算机的分辨率是1920x1080,特别是17英寸,这使得字母非常小而且很难看到).有没有办法从任何浏览器更改视图页面源部分中的字体和大小?(例如Chrome)

我知道我可以通过鼠标滚动或"ctrl"+"+"来放大页面,但这不是我想解决的方式.

谢谢

fonts google-chrome

5
推荐指数
2
解决办法
3933
查看次数

错误C2061:语法错误:标识符,但已包含头文件

我有一个很棒的游戏引擎来编译,它工作正常,直到我做了一些疯狂的调整.编译器莫名其妙地无法重新调整我的意思是Game对象并产生error C2061: syntax error : identifier 'Game',而且似乎无论我编译什么文件,错误总是指向一个名为GameDataLoader.h甚至没有与这两个文件连接的文件.通常我认为这是一个包含问题,但事实是我已经Game.h包含在每个.h文件中,包含stdafx.h之后,我已经#pragama once在它之上了.我考虑过循环包含问题,但#pragma once应该注意这一点.此外,这个包含指令工作正常,直到我更改了一些文件名和其他杂乱的东西.我清理了整个解决方案并尝试重建它但仍然没有运气(使用VS2012).我不知道显示代码是否有帮助,但这里是代码gameDataLoader.h.这不是我写的文件,但它应该正常工作.

#pragma once
#include "stdafx.h"
#include "Game\Game.h" // Game.h included

class GameDataLoader
{
public:
    GameDataLoader(){} 
    ~GameDataLoader(){}

void GameDataLoader::loadGameProperties( Game *game, map<wstring, wstring> *properties, wstring gameInitFile);

    virtual void loadGame(Game *game, wstring gameInitFile) = 0;
    virtual void loadGUI(Game *game, wstring guiInitFile) = 0;
    virtual void loadWorld(Game *game, wstring levelInitFile) = 0;
};
Run Code Online (Sandbox Code Playgroud)

我在游戏对象的4行中确实存在错误.可能是什么问题?双重包含?圆形包含?或者没有包含某些东西和其他地方?

c++ syntax-error identifier

1
推荐指数
1
解决办法
3万
查看次数

使用static_cast进行无效的类型转换,我应该使用哪种正确的转换?

我有一个类型定义typedef vector<Object*> ObjList;我也有一个功能vector<BigObject*>* ObjectBox::getBigObjectList();.BigObject从...开始Object

我想要做的是得到一个vector<BigObject*>*来自getBigObjectList()并将其转换为vector<Object*>*,这是一个向上铸造,而这个类型被定义为ObjList,所以我基本上是想以CONVER变成一只ObjList类型

我试过两种方式,第一种是

ObjList *normalObjectList = (ObjList*) box->getBigObjectList();
Run Code Online (Sandbox Code Playgroud)

这个编译,我从这篇文章中读到(什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?),这说C风格的转换很少需​​要,因为它可以发展成为reinterpret-cast

然后我尝试使用static_cast,但我收到一个错误,说无效的类型转换

ObjList *normalObjectList = static_cast<ObjList*> (box->ClipObjectInRect());
Run Code Online (Sandbox Code Playgroud)

这也不行

ObjList *normalObjectList = static_cast<vector<Object*>*> (box->ClipObjectInRect());
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?这是因为static_cast只能用于投射直接类(如Object自身)而不是嵌套类(我只是在这里猜测)?在这种情况下我该怎么办?

c++ casting typedef static-cast

1
推荐指数
1
解决办法
2万
查看次数