Description
I tried to use git2
in my build.rs
script and encountered a series of errors:
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_OpenProcessToken referenced in function current_user_sid␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_CheckTokenMembership referenced in function git_fs_path_owner_is␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_CopySid referenced in function sid_dup␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_EqualSid referenced in function git_fs_path_owner_is␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_GetLengthSid referenced in function sid_dup␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_GetTokenInformation referenced in function current_user_sid␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_IsValidSid referenced in function file_owner_sid␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_IsWellKnownSid referenced in function git_fs_path_owner_is␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-fs_path.o) : error LNK2019: unresolved external symbol __imp_GetNamedSecurityInfoW referenced in function file_owner_sid␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(43a19b30e9e69d8f-sysdir.o) : error LNK2019: unresolved external symbol __imp_RegCloseKey referenced in function lookup_registry_key␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(43a19b30e9e69d8f-sysdir.o) : error LNK2019: unresolved external symbol __imp_RegOpenKeyExW referenced in function lookup_registry_key␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(43a19b30e9e69d8f-sysdir.o) : error LNK2019: unresolved external symbol __imp_RegQueryValueExW referenced in function lookup_registry_key␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-rand.o) : error LNK2019: unresolved external symbol __imp_CryptAcquireContextA referenced in function getseed␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f5e66aefe9cd60e0-win32.o) : error LNK2001: unresolved external symbol __imp_CryptAcquireContextA␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-rand.o) : error LNK2019: unresolved external symbol __imp_CryptReleaseContext referenced in function getseed␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f5e66aefe9cd60e0-win32.o) : error LNK2001: unresolved external symbol __imp_CryptReleaseContext␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f6e81ea219c0b9f3-rand.o) : error LNK2019: unresolved external symbol __imp_CryptGenRandom referenced in function getseed␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f5e66aefe9cd60e0-win32.o) : error LNK2019: unresolved external symbol __imp_CryptGetHashParam referenced in function hash_cryptoapi_final␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f5e66aefe9cd60e0-win32.o) : error LNK2019: unresolved external symbol __imp_CryptCreateHash referenced in function hash_cryptoapi_init␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f5e66aefe9cd60e0-win32.o) : error LNK2019: unresolved external symbol __imp_CryptHashData referenced in function hash_cryptoapi_update␍
liblibgit2_sys-13851f2c09f1f8ee.rlib(f5e66aefe9cd60e0-win32.o) : error LNK2019: unresolved external symbol __imp_CryptDestroyHash referenced in function hash_cryptoapi_init␍
Turn out libgit2
uses some WinAPI calls from Advapi32, like GetCurrentProcess
in https://github.com/libgit2/libgit2/blob/21a351b0ed207d0871cb23e09c027d1ee42eae98/src/util/fs_path.c#L1832 (MSDN docs for this call https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocesstoken say that linkage with Advapi32.lib
is required for the call to work).
The problem is that there is no linkage with Advapi32 in CMake scripts. Looks like Advapi32 should be added in here https://github.com/libgit2/libgit2/blob/21a351b0ed207d0871cb23e09c027d1ee42eae98/src/CMakeLists.txt#L125-L128
I created an issue for this in the libgit2
repo libgit2/libgit2#7053 Just wanted to let you know, so new release is published when someone fixes this issue.