Я создал библиотеку stati c на Linux с компиляторами g cc с использованием cmake и теперь портирую на windows с компиляторами msv c. Я использую CLion с генератором по умолчанию, то есть NMakefiles x64. Мне удалось собрать свою библиотеку без ошибок, но когда я пытаюсь запустить любой код из библиотеки, программа просто вылетает. В попытке отладки я использую dumpbin.exe
, чтобы найти имена функций, которые отсутствуют в таблице COFF.
> dumpbin /symbols .\redland-combined.lib | findstr "UNDEF"
дает мне длинный список UNDEF
символов. Вот отрывок
...
093 00000000 UNDEF notype External | raptor_xml_namespace_uri
012 00000000 UNDEF notype () External | free
013 00000000 UNDEF notype () External | malloc
014 00000000 UNDEF notype () External | raptor_namespaces_start_namespace
015 00000000 UNDEF notype () External | raptor_new_namespace
018 00000000 UNDEF notype () External | raptor_librdfa_rdfa_iri_get_base
01A 00000000 UNDEF notype () External | raptor_librdfa_rdfa_create_mapping
01B 00000000 UNDEF notype () External | raptor_librdfa_rdfa_copy_mapping
01C 00000000 UNDEF notype () External | raptor_librdfa_rdfa_update_mapping
01D 00000000 UNDEF notype () External | raptor_librdfa_rdfa_free_mapping
01E 00000000 UNDEF notype () External | raptor_librdfa_rdfa_create_list
01F 00000000 UNDEF notype () External | raptor_librdfa_rdfa_replace_list
020 00000000 UNDEF notype () External | raptor_librdfa_rdfa_pop_item
021 00000000 UNDEF notype () External | raptor_librdfa_rdfa_free_list
022 00000000 UNDEF notype () External | raptor_librdfa_rdfa_replace_string
026 00000000 UNDEF notype () External | memset
Некоторые из перечисленных символов являются частью библиотеки, которую я пытаюсь построить, а другие - из библиотек зависимостей. Все это меня смущает, потому что я дважды и трижды проверял правильность путей включения и библиотек ссылок - кроме того, не должны ли мы получить ошибку компиляции / компоновщика, если они были неточными? Что меня больше всего сбивает с толку, так это наличие там подобных malloc
и free
. Что мне нужно сделать, чтобы преобразовать метку здесь в этой таблице для malloc
из EXTERNAL
в STATIC
?