cl.exe をコマンドラインで叩く際のメモ。
コンパイルエラー
やや初歩的なやつ
Z:\SAGYOBA\for_SPH\sph_dropletmaker_gpu\GL_viewer\src\readParticles.h(446,21): error C2039: 'filesystem': 'std' のメンバーではありません
(※ include の書き忘れではない。)
→ コンパイルオプション「/std:c++17」 あたりを追加で解消。
不思議エラー
構文エラー
Z:\SAGYOBA\for_SPH\sph_dropletmaker_gpu\GL_viewer\src\concavehull.h(138,45): error C4596: 'countface_tetra_result': メンバー宣言内の限定名が間違っています。
int* Concavehull::countface_tetra_result(
^
Z:\SAGYOBA\for_SPH\sph_dropletmaker_gpu\GL_viewer\src\glview3d_display.h(514,9): error C2059: 構文エラー: '||'
glfwGetWindowSize(window_glfw, &width, &height)
^
Z:\SAGYOBA\for_SPH\sph_dropletmaker_gpu\GL_viewer\src\glview3d_display.h(519,14): error C2059: 構文エラー: '||'
Z:\SAGYOBA\for_SPH\sph_dropletmaker_gpu\GL_viewer\src\glview3d_display.h(523,51): error C2059: 構文エラー: '||'
make: *** [particleViewer] エラー 2
→ コンパイルオプション「/permissive」 で消えた。
リンカエラー
競合の警告とエラー
リンク処理で競合の警告が多量に出た後、「未解決の外部シンボル~」でエラー終了する。
例えばこういうの ↓
LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
LINK : warning LNK4217: シンボル 'strncmp' ('libucrt.lib(strncmp.obj)' で定義) が 'glfw3.lib(init.obj)' によって関数 '_glfwParseUriList' 内でインポートされています
LINK : warning LNK4286: シンボル 'strncmp' ('libucrt.lib(strncmp.obj)' で定義) が 'glfw3.lib(context.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'strncmp' ('libucrt.lib(strncmp.obj)' で定義) が 'glfw3.lib(input.obj)' によってインポートされています
LINK : warning LNK4217: シンボル 'strncmp' ('libucrt.lib(strncmp.obj)' で定義) が 'glfw3.lib(egl_context.obj)' によって関数 '_glfwCreateContextEGL' 内でインポートされています
LINK : warning LNK4286: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(win32_joystick.obj)' によってインポートされています
LINK : warning LNK4217: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(wgl_context.obj)' によって関数 '_glfwCreateContextWGL' 内でインポートされています
LINK : warning LNK4217: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(egl_context.obj)' によって関数 '_glfwCreateContextEGL' 内でインポートされています
LINK : warning LNK4286: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(osmesa_context.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(win32_window.obj)' によってインポートされています
LINK : warning LNK4217: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(win32_init.obj)' によって関数 '_glfwPlatformInit' 内でインポートされています
LINK : warning LNK4217: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(win32_monitor.obj)' によって関数 'createMonitor' 内でインポートされています
LINK : warning LNK4217: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(vulkan.obj)' によって関数 '_glfwGetVulkanResultString' 内でインポートされています
LINK : warning LNK4217: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(init.obj)' によって関数 '_glfwInputError' 内でインポートされています
LINK : warning LNK4286: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(window.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(monitor.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'calloc' ('libucrt.lib(calloc.obj)' で定義) が 'glfw3.lib(input.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(win32_joystick.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(wgl_context.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(egl_context.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(osmesa_context.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(win32_window.obj)' によってインポートされています
LINK : warning LNK4217: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(win32_init.obj)' によって関数 '_glfwPlatformTerminate' 内でインポートされています
LINK : warning LNK4217: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(win32_monitor.obj)' によって関数 '_glfwGetMonitorContentScaleWin32' 内でインポートされています
LINK : warning LNK4217: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(vulkan.obj)' によって関数 '_glfwGetVulkanResultString' 内でインポートされています
LINK : warning LNK4217: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(init.obj)' によって関数 'terminate' 内でインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(window.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(monitor.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'free' ('libucrt.lib(free.obj)' で定義) が 'glfw3.lib(input.obj)' によってインポートされています
LINK : warning LNK4217: シンボル 'strtol' ('libucrt.lib(strtox.obj)' で定義) が 'glfw3.lib(init.obj)' によって関数 '_glfwParseUriList' 内でインポートされています
LINK : warning LNK4217: シンボル '__stdio_common_vsprintf' ('libucrt.lib(output.obj)' で定義) が 'glfw3.lib(init.obj)' によって関数 '_glfwInputError' 内でインポートされています
LINK : warning LNK4217: シンボル '__stdio_common_vsprintf' ('libucrt.lib(output.obj)' で定義) が 'glfw3.lib(win32_joystick.obj)' によって関数 '_glfwInitJoysticksWin32' 内でインポートされています
LINK : warning LNK4217: シンボル 'strncpy' ('libucrt.lib(strncpy.obj)' で定義) が 'glfw3.lib(window.obj)' によって関数 'glfwWindowHintString' 内でインポートされています
LINK : warning LNK4286: シンボル 'strncpy' ('libucrt.lib(strncpy.obj)' で定義) が 'glfw3.lib(monitor.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'strncpy' ('libucrt.lib(strncpy.obj)' で定義) が 'glfw3.lib(input.obj)' によってインポートされています
LINK : warning LNK4286: シンボル 'strncpy' ('libucrt.lib(strncpy.obj)' で定義) が 'glfw3.lib(win32_joystick.obj)' によってインポートされています
LINK : warning LNK4217: シンボル '__stdio_common_vsscanf' ('libucrt.lib(input.obj)' で定義) が 'glfw3.lib(context.obj)' によって関数 'sscanf' 内でインポートされています
LINK : warning LNK4217: シンボル 'qsort' ('libucrt.lib(qsort.obj)' で定義) が 'glfw3.lib(monitor.obj)' によって関数 'refreshVideoModes' 内でインポートされています
LINK : warning LNK4217: シンボル 'qsort' ('libucrt.lib(qsort.obj)' で定義) が 'glfw3.lib(win32_joystick.obj)' によって関数 '_glfwInitJoysticksWin32' 内でインポートされています
LINK : warning LNK4217: シンボル 'strtoul' ('libucrt.lib(strtox.obj)' で定義) が 'glfw3.lib(input.obj)' によって関数 'parseMapping' 内でインポートされています
glfw3.lib(init.obj) : error LNK2019: 未解決の外部シンボル __imp_strtok が関数 _glfwParseUriList で参照されました
glfw3.lib(init.obj) : error LNK2019: 未解決の外部シンボル __imp_realloc が関数 _glfwParseUriList で参照されました
glfw3.lib(monitor.obj) : error LNK2001: 外部シンボル __imp_realloc は未解決です
glfw3.lib(input.obj) : error LNK2001: 外部シンボル __imp_realloc は未解決です
glfw3.lib(win32_monitor.obj) : error LNK2001: 外部シンボル __imp_realloc は未解決です
glfw3.lib(input.obj) : error LNK2019: 未解決の外部シンボル __imp_strcspn が関数 glfwUpdateGamepadMappings で参照されました
glfw3.lib(input.obj) : error LNK2019: 未解決の外部シンボル __imp_strspn が関数 glfwUpdateGamepadMappings で参照されました
example_glfw_opengl2.exe : fatal error LNK1120: 4 件の未解決の外部参照
make: *** [example_glfw_opengl2.exe] エラー 2
対処法(※コンパイルからやり直せる場合)
コンパイル段階に戻って、オプション 「/MD」 を追加で再コンパイル。
⇒ 後のリンク処理が正常になった。
ランタイムの不一致
↓ こういうのがいっぱい出る。
qhullcpp.lib(PointCoordinates.obj) : error LNK2038: 'RuntimeLibrary' の不一致が検出されました。値 'MT_StaticRelease' が MD_DynamicRelease の値 'glview3d.obj' と一致しません。
→ コンパイル段階の「/MD /MT」とかで対処、ライブラリを作り直し必要かも。