windows下 ppsspp的编译

时间:2023-02-10 08:52:11

1、下载ppsspp源码
地址:https://github.com/hrydgard/ppsspp
注意要下载完整源码,ppsspp引用了别处的源码,网页直接下载是不全的。

2、打开工程
进入 “ppsspp\windows”文件下
打开“PPSSPP.vcxproj”,我的是环境是vs 2015。

3、编译
直接 Ctrl + F5 编译运行
如果出现无法打开XX.h文件说明源码未下载完全。

出现错误:
windows下 ppsspp的编译

MIPS\MIPSAsm.cpp(55): error C2555: “MIPSAsm::PspAssemblerFile::getVirtualAddress”: 重写虚函数返回类型有差异,且不是来自“AssemblerFile::getVirtualAddress”的协变
1> d:\python\ppsspp\ext\armips\core\FileManager.h(17): note: 参见“AssemblerFile::getVirtualAddress”的声明
1>MIPS\MIPSAsm.cpp(56): error C2555: “MIPSAsm::PspAssemblerFile::getPhysicalAddress”: 重写虚函数返回类型有差异,且不是来自“AssemblerFile::getPhysicalAddress”的协变
1> d:\python\ppsspp\ext\armips\core\FileManager.h(18): note: 参见“AssemblerFile::getPhysicalAddress”的声明

双击错误位置,进入MIPSAsm.cpp文件中
错误位置:

u64 getVirtualAddress() override { return address; };
u64 getPhysicalAddress() override { return getVirtualAddress(); };

这个类的基类AssemblerFile中定义的这两个函数的返回类型均是int64_t,所以将上面函数的返回类型改为int64_t。

int64_t getVirtualAddress() override { return address; };
int64_t getPhysicalAddress() override { return getVirtualAddress(); };

接着编译
又出现错误
windows下 ppsspp的编译

1>MIPS\MIPSAsm.cpp(76): error C2259: “MIPSAsm::PspAssemblerFile”: 不能实例化抽象类

双击进入错误点:
还是MIPSAsm.cpp
仔细观察发现,其父类中有一个纯虚函数getHeaderSize(),子类PspAssemblerFile没有重写,所以在
上面改正的代码下添加:

int64_t getHeaderSize() override { return 0; };

继续编译,又出现错误:
windows下 ppsspp的编译

2>libarmipsd.lib(Util.obj) : error LNK2019: 无法解析的外部符号 __imp__PathIsRelativeW@4,该符号在函数 "bool __cdecl isAbsolutePath(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?isAbsolutePath@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) 中被引用
2>..\PPSSPPDebug.exe : fatal error LNK1120: 1 个无法解析的外部命令

这个是因为没有添加相应的lib库导致的,在解决方案资源管理器中右键ppssppwindows工程,选择属性
windows下 ppsspp的编译

左边选择连接器-》输入
windows下 ppsspp的编译
在右边的附加依赖库中添加 shlwapi.lib
windows下 ppsspp的编译

最后点击确定。

再编译。

windows下 ppsspp的编译

成功。

附上修改后的工程,只改了debug win32,其他的可以参考上面修改。
http://pan.baidu.com/s/1o7TBCRC