无法在VS 2019的发布模式下为SDL库构建解决方案

时间:2019-10-08 14:41:28

标签: c cmake sdl visual-studio-2019 unresolved-external

enter image description here

我试图从这个特定的链接https://www.youtube.com/watch?v=PTQkCRxr6lk&t=194s下载SDL库。但是,我偶然发现了一个“致命错误”,我不知道该如何解决。

这是我遇到的错误:

<%= Parent.joins(:children).where("children.created_at BETWEEN ? AND ?", 2019-01-01, 2020-01-01).uniq.count %>

2 个答案:

答案 0 :(得分:3)

@ Neri-kun在VS2019上构建SDL2时遇到了完全相同的问题。似乎memsetvcruntime.dll中,但没有包含在CMakeLists.txt中。因此,请在CMakeLists.txt中找到以下部分,并将vcruntime添加到EXTRA_LIBS中。解决的问题:

   # Libraries for Win32 native and MinGW
-  list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 shell32)
+  list(APPEND EXTRA_LIBS vcruntime user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 shell32)

答案 1 :(得分:0)

这实际上是编译器优化问题。某种原因导致对memset的调用不合适。如果检查SDL_string.c文件,则会发现未定义HAVE_MEMSET,因此未调用memset。 VisualC文件夹中提供的解决方案文件确实可以正确构建发行版配置。如果检查cmake生成的解决方案与VisualC文件夹中的解决方案之间的差异,您会发现cmake生成的版本内联了任何合适的函数,而VisualC文件夹中的一个仅内联了__inline标记函数(/Ob1)。