我正在尝试从 Crysis Wars SDK 的源代码构建 DLL,并且过去在以前版本的 Visual Studio(即 2005、2008 和 2010)上成功地完成了此操作。 我的具体问题是:
Error 4 error LNK2019: unresolved external symbol "struct CTypeInfo const & __cdecl
TypeInfo<char>(char *)" (??$TypeInfo@D@@YAABUCTypeInfo@@PAD@Z) referenced in function
"void __cdecl SwapEndian<char>(char *,unsigned int)" (??$SwapEndian@D@@YAXPADI@Z)
G:\Noctis\Mods\Noctis\Code\GameCVars.obj GameDll
我曾尝试清理 Visual Studio 中的代码,并在偶然情况下重新构建它,但这并没有改变任何东西。
我是不是遗漏了什么,或者从 C++03 到 C++11 有什么变化,这意味着如果不恢复到旧版本的 C++,这段代码就无法再编译?
我已经在 64 位和 32 位的 Visual Studio 2010 上成功编译了这段代码,所以它一定是与将项目迁移到 Visual Studio 2015 相关的一些问题。
在 2012、2013 和 2015 版本的 Visual Studio 上编译会重现此错误,但不会在 2010 版本上重现,因此似乎是在 C++11 中引入了触发此问题的更改。
我做错了什么?
阅读 mem-fun is not a member of std 的答案,可能只是我需要包含一个标准库,而我不需要包含在早期版本的 Visual Studio 中。
如果这是真的,我需要哪个库 #include?
我也有created a GitHub repository containing only the original unmodified code provided from the SDK ,出于测试目的(如果我自己打错了字,这里似乎不是这种情况,但我已将链接放在这里,因为它可能会有帮助)。
如果重要的话,我在 Windows 10 Professional x64 上使用 Visual Studio 2015 企业版。
最佳答案
错误消息暗示了典型的“已声明但未定义”场景。
TypeInfo<char>(char*)在 TypeInfo.h 中声明(通过一些宏)并在 AutoTypeInfo.cpp 中声明在 CryCommon 项目中。
通常您只需确保正确构建 CryCommon 项目并正确链接到您的最终 GameDll 项目即可。
但事实证明,CryCommon 项目已经很长时间没有构建了——它引用了许多其他 Crytek 库等。所以问题一定是现在需要这些 TypeInfo<>定义,以前没有。
TypeInfo<>代码?在你的项目中它的功能是CmdHelp()在 Aurora/Code/GameCVars.cpp 中,正是这一行:
nRead = gEnv->pCryPak->FRead( buf, BUFSZ, f );
执行FRead()方法在 CryCommon/ICryPak.h 中:
template<class T>
size_t FRead(T *data, size_t elems, FILE *handle, bool bSwap = true)
{
size_t count = FReadRaw(data, sizeof(T), elems, handle);
if (bSwap)
SwapEndian(data, count);
return count;
}
如您所见,如果bSwap为真(默认),SwapEndian()在那里被调用。
也许编译器的行为确实不同。
或者,更有可能的是,您之前一直将项目编译为 Release。整个字节交换功能仅在大端系统(您的目标很可能不是其中之一)或调试期间启用 - 然后字节实际上被交换两次以测试相关代码(参见 CryCommon/Endian.h) .
你现在有几个选择:
仅作为发布版本继续编译(可能和以前一样)。也许您永远不会在调试器中调试代码。
只需在 FRead() 中评论交换调用代码出来。无论如何,您正在使用它来加载文本文件,没有必要交换字符。
...
FWIW,我必须做的其他事情才能使您的代码编译:
_SILENCE_STDEXT_HASH_DEPRECATION_WARNING /EHsc 关于c++ - 'TypeInfo<char>(char * )' isn' t defined but worked pre-C++11; what changed, and how can I fix the error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24580523/
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
似乎无法为此找到有效的答案。我正在阅读Rails教程的第10章第10.1.2节,但似乎无法使邮件程序预览正常工作。我发现处理错误的所有答案都与教程的不同部分相关,我假设我犯的错误正盯着我的脸。我已经完成并将教程中的代码复制/粘贴到相关文件中,但到目前为止,我还看不出我输入的内容与教程中的内容有什么区别。到目前为止,建议是在函数定义中添加或删除参数user,但这并没有解决问题。触发错误的url是http://localhost:3000/rails/mailers/user_mailer/account_activation.http://localhost:3000/rails/mai