gameknife/gkEngine

在编译gkEngine过程中,遇到的问题汇总贴。

Opened this issue · 29 comments

首先小小的抱怨一下,gkEngine目前只提供VS2010的解决方案文件。
而现在早就全民普及VS2013了,没有VS2010的话,还得现场安装一个。
下面列一下我在编译时遇到过的两个问题:

  1. 因为某些工程的字节编码问题,当const wchar_t[] 往 const char * 转的时候,会导致一个编译错误,需要把工程设置成多字节编码。
  2. 编译时出现如下的链接错误:【LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt】,可以参考 http://blog.csdn.net/junjiehe/article/details/16888197 这篇博客说的方法来解决。

windows平台我本已经取消多字节编码了... 统一使用utf16, 在ios和android使用的是utf8. 多字节问题很大,建议直接不用。
你说的编译问题可能是因为换了版本,我近期搞一个VS2013来看下。

@GraphicGame
你遇到的问题是否_T("Glow"),那个地方貌似是最后一版我修改ios遗留的错误,将_T去掉即可。
我正在修缮android版本,所以暂时没有提交修改...

对,是那个 _T("Glow") 的地方有错误。

您好,有些问题想问下。

  1. 在运行脚本 init_engine_res.bat, hand_make_resource.bat 等脚本的出错,原因是bat脚本中使用了中文 注释或者变量之类。
  2. 之前在论坛上问过,如何切换 dx9 引擎和 opengl 引擎的
    然后回答是: 修改 exec/configs/startup.cfg
    我查了下,我没有生成 exec/configs/ ,配置文件是在 tools 下
    gkEngine-master\exec\tools\default_cfg\startup.cfg
    修改了 exec\tools\default_cfg\startup.cfg ,但是 修改后内容没有生效。
  3. 编译过程中有一个 2>LINK : fatal error LNK1104: 无法打开文件“ToolkitPro1501vc100UD.lib” 错误
    这个是否正常?
  4. 但是最终,gkLauncher.exe 可以编译成功,但是运行的时候 没有资源,只有界面。
    应该是资源路径不对,请问下,资源加载路径一般是放在哪里?
  5. 看了下代码,
    gkEngine-master\code\engine\gkGameFramework\source\gkGameFramework.cpp (1 hit)
    Line 148: gkIniParser startupFile( _T("config/startup.cfg") );

gkStdString cfgfile = gkGetExecRootDir() + _T("media/config/startup.cfg");

这个 root 一般是哪里呢?

谢谢!

@caiyongnjupt

  1. 这个问题接到多次报告,下一个push解决
  2. 修改exec/configs/startup.cfg,须生成方可执行配置
  3. 你使用develop配置不会遇到这个问题,同时debug config我已经取消gkstudio编译,下一个push解决
  4. 问题就在于你没有exec/configs/startup.cfg
  5. Root就是 exec/

感谢关注,我近期一直在搞android版本编译,因此部分问题一直没修,下一次push即可使用了。

您好,编译成功,在运行的时候 发生如下错误。
模型无法加载,没有显示。

下面文件没有自动生成
exec/configs/startup.cfg
Copyright (C) Microsoft Corporation 2002-2009. All rights reserved.

F:\code20\gkEngine-master\exec\engine\shaders\d3d9\hwcode\post_msaa.fx(200,13):
warning X3578: 'DX9_SMAAResolveVS': Top-level output parameter 'offset' not comp
letely initialized

compilation succeeded; see F:\code20\gkEngine-master\exec\engine\shaders\d3d9\sh
adercache\post_msaa@0x00000001.o
[Error] Loading File engine/shaders/d3d9/shadercache/ksshadowstencilgen@0x800000
00.o Failed.
[Error] Loading File media/engine/shaders/d3d9/shadercache/ksshadowstencilgen@0x
80000000.o Failed.
[Warning] gkShader::Shader[ksshadowstencilgen] binary not exist.
Microsoft (R) Direct3D Shader Compiler 9.29.952.3111
Copyright (C) Microsoft Corporation 2002-2009. All rights reserved.

compilation succeeded; see F:\code20\gkEngine-master\exec\engine\shaders\d3d9\sh
adercache\ksshadowstencilgen@0x80000000.o
[Error] Loading File engine/shaders/d3d9/shadercache/ksshadowstencilgen@0x000000
00.o Failed.

请问如何解决?
估计是路径问题。

@caiyongnjupt
你放出的这段log,是系统在生成不存在的shadercache,重新生成的过程的log,是正常的。
至于模型无法加载,请给出进一步的问题描述,以方便定位。

编译错误,只要安装2010的serverpack1就好了

@GraphicGame 的问题请参见这篇wiki,安装一个vc100便可省去安装vs2010的过程。

@caiyongnjupt 的问题应该是由于CR/LF和LF换行符混乱导致的cfg文件加载错误。目前已经于 @8eefde3a8dcfb0e3c8fbe2f84cb53d3f7d6465cd 修复,合并至master。checkout最新的master即可修复。

最后,暂时不关闭这个issue,等待提问。

你好!我在运行的时候遇到一些问题,麻烦你解答一下:
编译在2013下不升级程序的时候编译通过了,但是运行的时候在我的电脑上出现了以下问题:

  • 配置hand_make_env.bat的时候出现找不到adreno_tga2atc_media.bat,但是依然编译过了。
  • 加载的时候出现了[Error]loading lib [null] failed我不知道这个有没有影响。
  • 然后是_gamedll = gkGameDemo_的加载,断言失败gk_vector3.h 116 this->IsValid()
    log如下:
……
ObjMeshFileLoader::Mesh Created.
MeshLoaded closing file...
GLESMesh vertexbuffer created.
GLESMesh indexbuffer created.
GLESMesh subset 2, vert 2669, tri 1609
GLESMesh loaded.
ObjMeshFileLoader::Mesh Created.
MeshLoaded closing file...
GLESMesh vertexbuffer created.
GLESMesh indexbuffer created.
GLESMesh subset 5, vert 6428, tri 4930
GLESMesh loaded.
F:\ccnet\build\bob_2013_2_5_Anarchy_Inst\Source\Common/Base/Container/Array/hkAr
ray.inl(21): [0x264718F3] Assert: i >= 0 && i < m_size
  • _gamedll = TestCases_可以被加载,但是所有选项在加载时都会失败,除了第一个加载角色。其中多数会出现上面一样的断言失败。

我的机器是:

windows8 64bit
显卡AMDHD7730M 
驱动信息:
Driver Packaging Version    14.501.1003-141120a-178000C
Catalyst Version    14.12 AMD Catalyst Omega Software
Provider    Advanced Micro Devices, Inc.
2D Driver Version   8.01.01.1443
2D Driver File Path /REGISTRY/MACHINE/SYSTEM/ControlSet001/Control/Class/{4d36e968-e325-11ce-bfc1-08002be10318}/0000
Direct3D Version    9.14.10.01080
OpenGL Version  6.14.10.13283
Mantle Driver Version   9.1.10.0045
Mantle API Version  98304
AMD Catalyst Control Center Version 2014.1120.2123.38423

所有的操作都是按照说明操作的,_startup.cfg_内容如下:

[launcher]
;gamedll = gkGameDemo
gamedll = TestCases

;renderer = gkRendererGLES2
renderer = gkRendererGL330
;renderer = gkRendererD3D9

physicsengine = gkHavok
;physicsengine = gkPhysX

width = 1280
height = 720

;stereodevice = gkOculus

DX的渲染器我无法成功加载可能是因为我的DXSDK安装失败了,ES没有尝试过。
另外,Intel的显卡均无法成功加载。

您好,虽然adreno_tga2pvr_engine.bat这个脚本不存在,但是工程中的大部分项目VS2013可以通过编译。个别静态库使用vs2010生成,如果重新使用vs2013生成一遍这些库文件后应该可以生成一个vs2013的解决方案。

希望有空把项目的编译重新整理一下,我使用vs2010都无法编译通过。在osx上面最后一步你给的还是一个bat的文件。希望能够整理一下做一个vs2012或者更高的出来,然后把osx上面的也整理一下。能够成功在osx和ios上面编译出来。非常感谢。

@BobLChen Hi, 我最近正在处理这件事,在new-dev-toochain分支上,正在开发。将sln拆分,布置osx的工具链。目前已经可以在osx完整的部署和打包了。正在做进一步完善工作,完成后会合并回主干。到时请帮忙测试和建议,万分感谢!!

@gameknife 等你整理完毕之后,我帮你测试一下。因为我现在主要的平台是osx,很希望能够将你的引擎以及studio跑起来,这样就极大的方便了我们的学习。非常感谢。

@BobLChen Engine,包括工具链,目前已经可以完全独立的运行在OSX上了。但Studio在OSX上目前架构是跑不起来。底层是基于MFC开发的,不过目前开发量不太大。如果你有兴趣的话,可以考虑用跨平台界面库在OSX上搭起来,后期也可以平行上Windows平台。

@gameknife 好的。今天晚上我会下载来看一下。辛苦你了。

@gameknife 仍然无法在osx上面编译通过。仍然希望你整理一下osx上面的流程。https://github.com/gameknife/gkEngine/wiki/iOS-OSX%E5%B9%B3%E5%8F%B0%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%E6%8C%87%E5%8D%97 这个给出是需要在win下面搭建配置一下。但是对于osx来说不可能还需要去win下面搭建。所以希望你能够整理一个在干净的osx平台上面一步一步的搭建流程。

我执行的是你对应的sh文件,而且严格按照你的说明来做的。但是到了hand_make_env.sh的时候就缺库了。

~/Code/gkEngine$ sh hand_make_env.sh
not found sdk package [ freetype ]. go next
not found sdk package [ havoksdk ]. go next
not found sdk package [ misc ]. go next
not found sdk package [ oglsdk ]. go next
not found sdk package [ havoksdk_ios ]. go next

希望你能够给出这些库的链接,方便其他人在搭建的时候能够找到对应的。

最后就是编译,我先编译的ios_lib。ios_lib开始报错各种冲突。

我用的就是你的new-dev-toochain分支。麻烦你了。

@BobLChen

I'm working on it...
工具链还在完善中,还没有合并回主干。
你应该能看到auto_make_env.sh,只要你有网络,这个脚本可以自动完成下载,解压,按平台准备资源,打包,编译的流程。目前windows上的auto_make_env.bat已经可以工作了。我正在完善macosx

@gameknife 非常不好意思一直催着你,我太迫切的想把你这个跑起来了。看了一下非常值得深入学习,只是光看有很多地方没有跑起来再看那么明白。

@BobLChen 以合并回主干,请从主干pull测试,直接在git根目录sh auto_make_env.sh。网络不好包没下全的话,多运行几次。

@gameknife 编译失败:
Ld /Users/neil/Code/gkEngine/exec/ios/Release-OSX/gkLauncherMac.app/Contents/MacOS/gkLauncherMac normal x86_64
cd /Users/neil/Code/gkEngine/code/engine
export MACOSX_DEPLOYMENT_TARGET=10.8
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -L/Users/neil/Code/gkEngine/exec/ios/Release-OSX -L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug -L/Users/neil/Code/gkEngine/code/engine/../thirdparty/OGLSDK/lib -L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug-iphoneos -L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug-OSX -F/Users/neil/Code/gkEngine/exec/ios/Release-OSX -filelist /Users/neil/Code/gkEngine/intermediate/Release-OSX/gkLauncherMac.build/Objects-normal/x86_64/gkLauncherMac.LinkFileList -mmacosx-version-min=10.8 -ObjC -stdlib=libc++ -fobjc-link-runtime -lgkCore -lgkFont -lgkGameFramework -lgkGameObjectSystem -lgkInput -lgkRendererGL330 -lgkSystem -lTestCases -lglfw -framework OpenGL -framework AppKit -framework IOKit -framework CoreGraphics -Xlinker -dependency_info -Xlinker /Users/neil/Code/gkEngine/intermediate/Release-OSX/gkLauncherMac.build/Objects-normal/x86_64/gkLauncherMac_dependency_info.dat -o /Users/neil/Code/gkEngine/exec/ios/Release-OSX/gkLauncherMac.app/Contents/MacOS/gkLauncherMac
ld: warning: directory not found for option '-L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug'
ld: warning: directory not found for option '-L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug-iphoneos'
ld: warning: directory not found for option '-L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug-OSX'
ld: library not found for -lgkCore
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **

The following build commands failed:
Ld /Users/neil/Code/gkEngine/exec/ios/Release-OSX/gkLauncherMac.app/Contents/MacOS/gkLauncherMac normal x86_64
(1 failure)
The application cannot be opened because its executable is missing.

平台信息:
image

@gameknife 在xcode里面的报错信息如下:
ld: warning: directory not found for option '-L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug'
ld: warning: directory not found for option '-L/Users/neil/Code/gkEngine/code/engine/../../exec/ios/Debug-iphoneos'
ld: library not found for -lgkCore
clang: error: linker command failed with exit code 1 (use -v to see invocation)

没有找到lgkcore这个库。

@BobLChen gkCore没有编译成功,前面的dependency是否没有下载完全?

@BobLChen 貌似有一个地方忘了说,需要把xcode的location设置为legacy

@gameknife OK。可以了。非常感谢你。辛苦了。

你好,
尝试在android上运行gkEngine, 报错:

11-29 18:52:11.039: E/AndroidRuntime(31794): FATAL EXCEPTION: main
11-29 18:52:11.039: E/AndroidRuntime(31794): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kkstudio.gklauncher/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /mnt/asec/com.kkstudio.gklauncher-4/lib/libgkLauncherAndroid.so

检查过lib目录下,编译的so 都存在
shell@android:/mnt/asec/com.kkstudio.gklauncher-13/lib $ ls -l
ls -l
-rw-r--r-- system system 264772 2013-10-01 07:51 gdbserver
-rw-r--r-- system system 239012 2015-12-29 20:01 libTestCases.so
-rw-r--r-- system system 1169204 2015-12-29 21:01 libgkCore.so
-rw-r--r-- system system 771680 2015-12-29 21:01 libgkFont.so
-rw-r--r-- system system 472376 2015-12-29 21:01 libgkGameFramewor
-rw-r--r-- system system 537932 2015-12-29 21:01 libgkGameObjectSy
-rw-r--r-- system system 173260 2015-12-29 21:01 libgkInput.so
-rw-r--r-- system system 124176 2015-12-29 21:01 libgkLauncherAndr
-rw-r--r-- system system 1230512 2015-12-29 21:01 libgkRendererGLES
-rw-r--r-- system system 1230440 2015-12-29 21:01 libgkSystem.so

搜索网上,有说是so加载的问题,请问如何解决?

你好,我在Win7 64位,vs2010环境下编译
加载TestCase_LoadScene场景时出错
[Warning] gkSceneBuilder::Loaded: [level/village/village.gks], use 4.15 seconds.

Compile Shader grass@0 success.
Compile Shader ksbase@32 success.
Compile Shader ksbase@0 success.
Compile Shader vegetation_autoexpand@0 success.
Compile Shader vegetation@0 success.
Compile Shader grass@0 success.
Compile Shader ksbase@32 success.
Compile Shader ksbase@0 success.
Compile Shader vegetation_autoexpand@0 success.
Compile Shader vegetation@0 success.
Compile Shader terrian@0 success.
Compile Shader grass@0 success.
Compile Shader ksbase@32 success.
Compile Shader ksbase@0 success.
F:\ccnet\build\bob_2013_2_5_Anarchy_Inst\Source\Common/Base/Container/Array/hkAr
ray.inl(21): [0x264718F3] Assert: i >= 0 && i < m_size

上面找不到这个F:\ccnet的东西,我并没有这个驱动目录,请问这是模型还是哪的位置......

@kileyi
您好,这个是havok库内部的assert。理论错应该不在这里,上面的log也都正常,你能po一份更详细的Log么?

考虑过gkENGINE_VS2015.sln(即vs2015版本)的兼容吗?