相关疑难解决方法(0)

在MSVC中链接错误LNK2019,带有__imp__前缀的未解析符号,但应该来自静态lib

我正在尝试将MSVC中的问题与我为g ++编写的项目联系起来.这是问题所在:

我将libssh构建为静态库作为我的应用程序的一部分,在cmake中添加目标

add_library(ssh_static STATIC $ libssh_SRCS)

Libssh在C中,所以我有'extern'C"{...}'将包含在我的c ++源代码中.然后我将ssh_static目标链接到我的可执行文件sshconnectiontest

target_link_libraries(sshconnectiontest ... ssh_static ...)

这一切都适用于linux和gcc,但现在在MSVC中我得到了

error LNK2019: unresolved external symbol __imp__[function names here] referenced in [filename]
Run Code Online (Sandbox Code Playgroud)

对于我使用的每个libssh函数.

任何想法都出错了?我已经读过某个地方,imp前缀意味着链接器期望链接.dll,但这不应该是这种情况,因为ssh_static在add_library调用中被声明为静态库...

cmake dllimport lnk2019 visual-c++ imp

25
推荐指数
2
解决办法
5万
查看次数

g ++包括boost库

我使用bjam构建了我的boost库,然后将所有.a文件移入c:\Server\libs\boost_1_46_0\lib

如果我想编译我的程序有一些错误:

编译命令

g++ -Ic:\Server\libs\boost_1_46_0\ -Lc:\Server\libs\boost_1_46_0\lib\ -lboost_thread-mgw45-mt-1_46 -o try1 try1.cpp

错误

C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text+0xe9): undefined
 reference to `_imp___ZN5boost6thread4joinEv'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text+0x120): undefine
d reference to `_imp___ZN5boost6threadD1Ev'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text+0x138): undefine
d reference to `_imp___ZN5boost6threadD1Ev'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text$_ZN5boost11this_
thread18interruptible_waitEm[boost::this_thread::interruptible_wait(unsigned lon
g)]+0x40): undefined reference to `_imp___ZN5boost11this_thread18interruptible_w
aitEPvNS_6detail7timeoutE'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text$_ZN5boost6thread
C1IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4
_EEEEPNS0_5dummyEE4typeE[boost::thread::thread<void (*)()>(void (*)(), boost::di
sable_if<boost::is_convertible<void (*&)(), boost::detail::thread_move_t<void (*
)()> >, boost::thread::dummy*>::type)]+0x23): undefined reference to `_imp___ZN5
boost6thread12start_threadEv'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题的问题吗?

我遵循了这个教程: http ://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html

所以这是来源:http://pastebin.com/YqCPLNwU

更新:

我认为错误不在于库,错误在库中.我用bjam和toolchain=gcc multithread选项构建它.

UPDATE

这是objdump …

c++ boost g++ static-linking

6
推荐指数
2
解决办法
7135
查看次数

使用 Boost.Log 构建 Boost“错误:目标 { simple_event_log.mc. } 没有类型”

我正在尝试构建 Boost.Log ( http://boost-log.sourceforge.net/libs/log/doc/html/index.html )。我将其添加到我的 boost 源中并执行了我常用的 boost 构建命令。

b2 --build-dir="D:\boost\1.51.0\boost" toolset=gcc variant=release link=static threading=multi  runtime-link=static --build-type=complete
Run Code Online (Sandbox Code Playgroud)

但什么也没发生,我最终收到了这个:

D:/boost/1.51.0/src/tools/build/v2/build\generators.jam:1085: in ensure-type from module generators
error: target { simple_event_log.mc. } has no type
D:/boost/1.51.0/src/tools/build/v2/build\generators.jam:1319: in generators.construct from module generators
D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1495: in construct from module object(typed-target)@491
D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1298: in object(typed-target)@491.generate from module object(typed-target)@491
D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:732: in generate-really from module object(main-target)@1871

D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:704: in object(main-target)@1871.generate from module object(main-target)@1871
D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:258: in object(project-target)@474.generate from module object(project-target)@474
D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:848: in targets.generate-from-reference from module targets D:/boost/1.51.0/src/tools/build/v2/build\targets.jam:1217: in generate-dependencies from module object(install-target-class)@96 …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-log

5
推荐指数
1
解决办法
1305
查看次数

标签 统计

boost ×2

c++ ×2

boost-log ×1

cmake ×1

dllimport ×1

g++ ×1

imp ×1

lnk2019 ×1

static-linking ×1

visual-c++ ×1