【发布时间】:2015-05-07 08:13:04
【问题描述】:
我想为自己编译 openttd 源代码。它使用的是 Squirell 库,由于链接器错误,我无法编译。我查看了无法编译的代码,我看到了我(和链接器:D)无法理解的奇怪结构:
new ((void *)&_vals[i]) T(v._vals[i]);
我修改了代码,现在看起来像这样:
_vals[i] = *(new T(v._vals[i]));
我不知道我是否以好的方式修改了代码。我希望我做到了。游戏现在没有崩溃,所以它有可能运行良好。
有人能说一下为什么这个构造没有任何编译时错误,只是链接器错误吗?这段代码到底在做什么?
重要信息:我正在使用 Visual Studio 2013。
【问题讨论】:
-
你能显示这个链接器错误吗?
-
重新打开,因为这不是重复的。问题还在于修改是否有不利影响。
-
@Shoter:欢迎来到 Stackoverflow。请注意,链接到相关代码不是一个好习惯,因为链接往往会过时。请在您的问题中发布相关摘录(例如所有涉及的变量的类型)。您还应该始终发布您收到的确切错误消息。这使人们更容易回答您的问题,并使其对有类似问题的其他人更有用。
-
链接器错误:4>e:\openttd\trunk\src\3rdparty\squirrel\squirrel\squtils.h(38): 致命错误 C1001: 编译器发生内部错误。 4>(编译器文件'f:\dd\vctools\compiler\utc\src\p2\main.c',第228行)我的行号略有不同。
标签: c++