我正在使用 premake5 和 VS2013 在 C# 中创建一个 SharedLib。在列出我的项目之前,我在解决方案级别运行以下命令:
configurations { "Debug", "Release" }
platforms { "Win32", "Win64" }
filter "configurations:Debug"
defines { "DEBUG" }
flags { "Symbols" }
filter "configurations:Release"
defines { "NDEBUG" }
optimize "On"
filter "platforms:Win32"
system "Windows"
architecture "x32"
filter "platforms:Win64"
system "Windows"
architecture "x64"
这会生成一个解决方案文件以及项目文件。但是,在 VS2013 中打开解决方案并将构建平台设置为 Win64 后,我注意到它没有构建。检查配置管理器后,我注意到我的项目针对 Win32 和 Win64 都设置为 x86。它们甚至没有设置为 Release 或 Debug Win64 版本。然而,它们被设置为在任一 Win32 中构建。我很想发布截图,但我的声誉太低了。
看起来我只是没有正确地将其设置为 64 位。“x64”是要使用的正确字符串吗?预制件只是有一个错误吗?我应该注意,我可以手动将 Win64 设置为 x64,并在打开解决方案后检查配置管理器中的“构建”框。
编辑:我确认问题出在解决方案文件的生成中。GlobalSection(ProjectConfigurationPlatforms) = postSolution 条目的编写如下:
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|Win64.ActiveCfg = Debug Win64|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|Win64.Build.0 = Debug Win64|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|x86.ActiveCfg = Debug|x86
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|x86.Build.0 = Debug|x86
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|Win64.ActiveCfg = Release Win64|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|Win64.Build.0 = Release Win64|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|x86.ActiveCfg = Release|x86
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|x86.Build.0 = Release|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|Win64.ActiveCfg = Debug Win64|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|Win64.Build.0 = Debug Win64|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|x86.ActiveCfg = Debug|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|x86.Build.0 = Debug|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Release|Win64.ActiveCfg = Release Win64|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Release|Win64.Build.0 = Release Win64|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Release|x86.ActiveCfg = Release|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Release|x86.Build.0 = Release|x86
EndGlobalSection
当它们应该写成:
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|Win64.ActiveCfg = Debug|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|Win64.Build.0 = Debug|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|x86.ActiveCfg = Debug|x86
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Debug|x86.Build.0 = Debug|x86
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|Win64.ActiveCfg = Release|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|Win64.Build.0 = Release|x64
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|x86.ActiveCfg = Release|x86
{25F339C1-1195-6497-FA4F-78EBE690EBE7}.Release|x86.Build.0 = Release|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|Win64.ActiveCfg = Debug|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|Win64.Build.0 = Debug|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|x86.ActiveCfg = Debug|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Debug|x86.Build.0 = Debug|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Release|Win64.ActiveCfg = Release|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Release|Win64.Build.0 = Release|x64
{01747461-6D34-F097-366F-3915A2EE3474}.Release|x86.ActiveCfg = Release|x86
{01747461-6D34-F097-366F-3915A2EE3474}.Release|x86.Build.0 = Release|x86
EndGlobalSection