'Link error when add libbitcoin to cmake project on Windows 10
I am going to build a C++ project (Project "test") to use libbitcoin library. I use CMake to configure. The libbitcoin.lib is built with Visual Studio 15 2017 (vs141). Libbitcoin build log:
ConfigurationType : StaticLibrary
Configuration : ReleaseLIB
PlatformToolset : v141
TargetPath : H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\bin\x64\Release\v141\static\libbitcoin-system.lib
Linkage-secp256k1 : static
block.cpp
chain_state.cpp
compact.cpp
input.cpp
output.cpp
output_point.cpp
point.cpp
point_iterator.cpp
point_value.cpp
points_value.cpp
script.cpp
witness.cpp
authority.cpp
base16.cpp
base2.cpp
base58.cpp
base64.cpp
checkpoint.cpp
directory.cpp
endpoint.cpp
hash160.cpp
hash256.cpp
parameter.cpp
parser.cpp
printer.cpp
sodium.cpp
error.cpp
base_10.cpp
base_16.cpp
base_58.cpp
base_64.cpp
base_85.cpp
file_collector.cpp
file_collector_repository.cpp
file_counter_formatter.cpp
sink.cpp
statsd_sink.cpp
udp_client_sink.cpp
interpreter.cpp
number.cpp
opcode.cpp
operation.cpp
program.cpp
checksum.cpp
crypto.cpp
elliptic_curve.cpp
hash.cpp
secp256k1_initializer.cpp
stealth.cpp
address.cpp
alert.cpp
alert_payload.cpp
block_transactions.cpp
compact_block.cpp
fee_filter.cpp
filter_add.cpp
filter_clear.cpp
filter_load.cpp
get_address.cpp
get_block_transactions.cpp
get_blocks.cpp
get_data.cpp
get_headers.cpp
headers.cpp
heading.cpp
inventory.cpp
inventory_vector.cpp
memory_pool.cpp
merkle_block.cpp
messages.cpp
network_address.cpp
not_found.cpp
ping.cpp
pong.cpp
prefilled_transaction.cpp
reject.cpp
send_compact.cpp
send_headers.cpp
verack.cpp
version.cpp
console_streambuf.cpp
ifstream.cpp
ofstream.cpp
unicode.cpp
unicode_istream.cpp
unicode_ostream.cpp
unicode_streambuf.cpp
binary.cpp
conditional_lock.cpp
deadline.cpp
dispatcher.cpp
flush_lock.cpp
interprocess_lock.cpp
istream_reader.cpp
monitor.cpp
ostream_writer.cpp
png.cpp
prioritized_mutex.cpp
pseudo_random.cpp
scope_lock.cpp
sequencer.cpp
sequential_lock.cpp
socket.cpp
string.cpp
thread.cpp
threadpool.cpp
work.cpp
bitcoin_uri.cpp
dictionary.cpp
ec_private.cpp
ec_public.cpp
ek_private.cpp
ek_public.cpp
ek_token.cpp
electrum.cpp
electrum_dictionary.cpp
encrypted_keys.cpp
hd_private.cpp
hd_public.cpp
message.cpp
mini_keys.cpp
mnemonic.cpp
parse_encrypted_private.cpp
parse_encrypted_public.cpp
parse_encrypted_token.cpp
payment_address.cpp
qrcode.cpp
select_outputs.cpp
stealth_address.cpp
stealth_receiver.cpp
stealth_sender.cpp
uri.cpp
header.cpp
transaction.cpp
aes256.c
crypto_scrypt.c
hmac_sha256.c
hmac_sha512.c
lax_der_parsing.c
pbkdf2_sha256.c
pkcs5_pbkdf2.c
ripemd160.c
sha1.c
sha256.c
sha512.c
zeroize.c
block.cpp
header.cpp
transaction.cpp
qrcode.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
png.obj : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
libbitcoin-system.vcxproj -> H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\bin\x64\Release\v141\static\libbitcoin-system.lib
Updated:
Then I add libbitcoin and Boost dependencies (all Boost libraries are built with vc141 too) to Project test and CMakeList file as below:
cmake_minimum_required (VERSION 3.8)
set(VS150COMNTOOLS "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/Common7/Tools")
project ("test")
# Add libbitcoin
include_directories("${CMAKE_SOURCE_DIR}/include")
find_library(libbitcoin libbitcoin-system "${CMAKE_SOURCE_DIR}/libs")
# Add boost
SET (BOOST_ROOT "H:/New Download/boost_1_72_0/boost_1_72_0")
SET (BOOST_LIBRARYDIR "H:/New Download/boost_1_72_0/boost_1_72_0/stage/lib")
set(Boost_COMPILER "-vc141")
set(Boost_USE_STATIC_LIBS ON) # only find static libs
set(Boost_USE_DEBUG_LIBS ON) # ignore debug libs and
set(Boost_USE_RELEASE_LIBS OFF) # only find release libs
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost "1.72.0" EXACT REQUIRED COMPONENTS
thread date_time chrono regex filesystem iostreams program_options log log_setup atomic locale)
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
endif()
# Add source to this project's executable.
add_executable (test "test.cpp" "test.h")
target_link_libraries(test ${libbitcoin} ${Boost_LIBRARIES})
I checked the libbitcoin-system.lib to be static library with lib /list and dumpbin /ARCHIVEMEMBERS and it returns list of obj:
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\resource.res
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\chain_state.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\compact.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\input.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\output.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\output_point.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\point.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\point_iterator.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\point_value.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\points_value.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\script.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\witness.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\authority.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base16.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base2.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base58.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base64.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\checkpoint.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\directory.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\endpoint.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\hash160.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\hash256.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\parameter.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\parser.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\printer.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\sodium.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\error.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base_10.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base_16.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base_58.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base_64.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\base_85.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\file_collector.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\file_collector_repository.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\file_counter_formatter.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\sink.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\statsd_sink.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\udp_client_sink.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\interpreter.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\number.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\opcode.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\operation.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\program.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\checksum.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\crypto.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\elliptic_curve.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\aes256.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\crypto_scrypt.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\hmac_sha256.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\hmac_sha512.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\lax_der_parsing.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\pbkdf2_sha256.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\pkcs5_pbkdf2.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ripemd160.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\sha1.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\sha256.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\sha512.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\zeroize.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\hash.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\secp256k1_initializer.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\stealth.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\address.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\alert.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\alert_payload.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\block_transactions.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\compact_block.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\fee_filter.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\filter_add.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\filter_clear.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\filter_load.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\get_address.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\get_block_transactions.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\get_blocks.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\get_data.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\get_headers.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\headers.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\heading.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\inventory.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\inventory_vector.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\memory_pool.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\merkle_block.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\messages.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\network_address.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\not_found.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ping.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\pong.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\prefilled_transaction.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\reject.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\send_compact.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\send_headers.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\verack.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\version.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\console_streambuf.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ifstream.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ofstream.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\unicode.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\unicode_istream.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\unicode_ostream.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\unicode_streambuf.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\binary.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\conditional_lock.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\deadline.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\dispatcher.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\flush_lock.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\interprocess_lock.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\istream_reader.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\monitor.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ostream_writer.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\png.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\prioritized_mutex.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\pseudo_random.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\scope_lock.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\sequencer.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\sequential_lock.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\socket.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\string.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\thread.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\threadpool.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\work.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\bitcoin_uri.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\dictionary.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ec_private.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ec_public.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ek_private.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ek_public.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\ek_token.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\electrum.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\electrum_dictionary.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\encrypted_keys.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\hd_private.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\hd_public.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\message.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\mini_keys.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\mnemonic.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\parse_encrypted_private.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\parse_encrypted_public.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\parse_encrypted_token.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\payment_address.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\qrcode.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\select_outputs.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\stealth_address.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\stealth_receiver.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\stealth_sender.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\uri.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\src_chain_block.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\src_chain_header.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\src_chain_transaction.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\src_message_block.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\src_message_header.obj
H:\CProject\libbitcoin-system\builds\msvc\vs2017\libbitcoin-system\..\..\..\..\obj\libbitcoin-system\x64\Release\v141\static\src_message_transaction.obj
When I build the project there are 2 unresolved points
H:\CProject\test\test\out\build\x64-Debug\test.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl libbitcoin::config::checkpoint::checkpoint(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned __int64)" (__imp_??0checkpoint@config@libbitcoin@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z) referenced in function "void __cdecl libbitcoin::`dynamic initializer for 'mainnet_bip16_exception_checkpoint''(void)" (??__Emainnet_bip16_exception_checkpoint@libbitcoin@@YAXXZ)
H:\CProject\test\test\out\build\x64-Debug\test.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char const libbitcoin::machine::number::negative_mask" (__imp_?negative_mask@number@machine@libbitcoin@@2EB)
H:\CProject\test\test\out\build\x64-Debug\Debug\test.exe : fatal error LNK1120: 2 unresolved externals
I am new with the library and this aspect too so I don't know what is the missing part that related to libbitcoin or boost. I am very appreciated if someone has any idea of what can I do.
Solution 1:[1]
Have you thought about using the find_package command instead of find_library for boost?
CMake ships the corresponding findBoost module (https://cmake.org/cmake/help/latest/module/FindBoost.html):
find_package(Boost 1.67 REQUIRED COMPONENTS
python36 numpy36)
add_executable(foo foo.cc)
target_link_libraries(foo Boost::python36 Boost::numpy36)
This makes error messages much clearer and you have automatic propagation of public include directories.
However, the linker error reads like a dll error. Are you sure CMake found the static library and not a dynamic library? On the other hand, if your libbitcoin build didn't configure correctly, it might have been built with the dll export macros enabled. And/or you need to add a compile definition to your build
target_compile_definitions(-DUSE_STATIC_LIBBITCOIN)
(https://cmake.org/cmake/help/latest/command/target_compile_definitions.html)
This has been described in an other question here: How can I handle DLL_EXPORT when compiling dll to a static library?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | tooEarlyToGetUp |
