- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 OS X (clang) 上,在链接阶段,我的代码中没有找到符号 ( boost::filesystem::portable_posix_name
)。这是一个简短的代码片段,其中包含我在代码中调用的函数:
if (boost::filesystem::is_directory(settings.parent_path())
&& boost::filesystem::portable_posix_name(settings.filename().string()))
{ ... }
(如果我的代码片段中需要更多上下文,请告诉我。)
程序编译和链接时使用的链接器命令行包含以下内容:
-L/Users/administrator/boost_1_54_0/lib -lboost_filesystem
... 并且指示的路径和文件名(libboost_filesystem.a
和 libboost_filesystem.dylib
)存在于指示的路径中。
链接器找不到 Boost 函数 boost::filesystem::portable_posix_name(std::string const &)
:
Undefined symbols for architecture x86_64:
"boost::filesystem::portable_posix_name(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)"
但是,我确实看到这个函数存在于 .a
中和 .dylib
有问题的文件:
nm -m ./libboost_filesystem.a
揭示 00000000000090f0 (__TEXT,__text) external __ZN5boost10filesystem19portable_posix_nameERKSs
,并运行损坏的函数名称 __ZN5boost10filesystem19portable_posix_nameERKSs
通过 demangler 线揭示:
_boost::filesystem::portable_posix_name(std::string const&)
...我相信名称前面的下划线是正确的,因为找到的其他函数也有前面的下划线。
(.dylib
文件也包含相同的损坏字符串)。
我已经确认 .a
的架构和 .dylib
文件正确:otool -hv ./libboost_filesystem.a
显示' x86_64
' 贯穿始终(对于 .dylib
也是如此)。
为了确保确实找到并链接了库,我在编译命令行中更改了库的名称,如下所示:
-L/Users/administrator/boost_1_54_0/lib -lboost_filesystemm
(注意文件名末尾的双 mm
),只是为了确认返回了“找不到库”错误,它是:ld: library not found for -lboost_filesystemm
.我还确认了文件系统中唯一出现的 libboost_filesystem.a
和 .dylib
文件是给定 Boost 目录树中的文件(一个在 /lib
目录中,另一个大小相同且创建日期/时间几乎相同的文件在 /bin.v2
子目录中);另外,更改 -L/Users/administrator/boost_1_54_0/lib
使其成为垃圾的行会导致 ld: library not found for -lboost_filesystem
出现错误。
奇怪的是,当我 grep nm -m
boost::filesystem::is_directory
存在的输出, 后一个函数的库的符号表中没有结果出现,即使此函数没有链接器错误。这对我来说似乎非常倒退(不出现在库中的函数链接正常,但是确实出现在库中的函数给出了链接器错误?) - 但是这个问题改天再说(也许这个函数实际上会出现 undefined symbol 错误,但由于第一个 undefined symbol 错误而没有显示)。
我的问题是:为什么找不到这个符号,尽管正确的库、正确的体系结构和正确的 external
符号,正在链接?
为了回应@Sebastian 的回答,我在这里粘贴了链接器的完整命令行。此命令行由 Qt 创建(这是一个 Qt 项目)。
请注意 -lboost_filesystem
在列出所有目标文件后出现参数。
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -stdlib=libc++ -mmacosx-version-min=10.7 -o NewGene.app/Contents/MacOS/NewGene main.o newgenemainwindow.o newgenecreateoutput.o newgeneselectvariables.o newgenevariablesummary.o newgenetabwidget.o newgenevariablegroup.o newgenevariables.o newgenevariablegroupsscrollarea.o newgenevariablestoolboxwrapper.o newgenevariablestoolbox.o newgenevariablesummaryscrollarea.o newgenevariablesummarygroup.o kadcolumnselectionbox.o timerangebox.o newgenewidget.o uisettingsmanager.o uimodelmanager.o uidocumentmanager.o uistatusmanager.o globals.o uimanager.o settingchangeresponseindicator.o settingchangerequestindicator.o settingchangeindicator.o projectsettingchangeindicator.o globalsettingchangeindicator.o settingchangeresponseitem.o settingchangerequestitem.o settingchangeitem.o projectsettingchangeitem.o globalsettingchangeitem.o globalsettingchangerequestindicator.o globalsettingchangeresponseindicator.o globalsettingchangerequestitem.o globalsettingchangeresponseitem.o projectsettingchangerequestindicator.o projectsettingchangeresponseindicator.o projectsettingchangerequestitem.o projectsettingchangeresponseitem.o modelchangeresponse.o modelchangerequest.o modelchangeindicator.o modelchangeresponseitem.o modelchangerequestitem.o modelchangeitem.o uiprojectmanager.o newgenefilenames.o uiloggingmanager.o newgeneapplication.o uiallsettings.o uisetting.o uimessager.o uiinputproject.o uioutputproject.o uiinputmodel.o uioutputmodel.o uiallprojectsettings.o uimodel.o uiproject.o uiinputprojectsettings.o uioutputprojectsettings.o uiallglobalsettings.o uiallglobalsettings_list.o uiinputprojectsettings_list.o uioutputprojectsettings_list.o uithreadmanager.o uitriggermanager.o uimodelsettings.o uiinputmodelsettings.o uioutputmodelsettings.o eventloopthreadmanager.o workqueuemanager.o outputprojectworkqueue_base.o inputprojectworkqueue_base.o inputprojectworkqueue.o outputprojectworkqueue.o inputmodelworkqueue_base.o outputmodelworkqueue_base.o inputmodelworkqueue.o outputmodelworkqueue.o inputprojectsettingsworkqueue_base.o outputprojectsettingsworkqueue_base.o globalsettingsworkqueue_base.o inputmodelsettingsworkqueue_base.o outputmodelsettingsworkqueue_base.o globalsettingsworkqueue.o inputmodelsettingsworkqueue.o outputmodelsettingsworkqueue.o inputprojectsettingsworkqueue.o outputprojectsettingsworkqueue.o uiuidatamanager.o uiuiactionmanager.o uimodelactionmanager.o uiprojectmanagerworkqueue_base.o uiprojectmanagerworkqueue.o uiwidgetdatarefresh.o uimessagersingleshot.o modelworkqueue.o uiaction.o variablegroupsetmemberselectionchange.o kadwidgetsscrollarea.o kadspinbox.o kadcountchange.o generateoutput.o newgenedatetimewidget.o timerangechange.o newgenegenerateoutput.o generaloptions.o qrc_NewGeneResources.o moc_newgenemainwindow.o moc_newgenecreateoutput.o moc_newgeneselectvariables.o moc_newgenevariablesummary.o moc_newgenetabwidget.o moc_newgenevariablegroup.o moc_newgenevariables.o moc_newgenevariablegroupsscrollarea.o moc_newgenevariablestoolboxwrapper.o moc_newgenevariablestoolbox.o moc_newgenevariablesummaryscrollarea.o moc_newgenevariablesummarygroup.o moc_kadcolumnselectionbox.o moc_timerangebox.o moc_uisettingsmanager.o moc_uimodelmanager.o moc_uidocumentmanager.o moc_uistatusmanager.o moc_globalsettingchangerequestindicator.o moc_globalsettingchangeresponseindicator.o moc_globalsettingchangerequestitem.o moc_globalsettingchangeresponseitem.o moc_projectsettingchangerequestindicator.o moc_projectsettingchangeresponseindicator.o moc_projectsettingchangerequestitem.o moc_projectsettingchangeresponseitem.o moc_modelchangeresponse.o moc_modelchangerequest.o moc_modelchangeindicator.o moc_modelchangeresponseitem.o moc_modelchangerequestitem.o moc_modelchangeitem.o moc_uiprojectmanager.o moc_uiloggingmanager.o moc_newgeneapplication.o moc_uimessager.o moc_uiinputproject.o moc_uioutputproject.o moc_uiinputmodel.o moc_uioutputmodel.o moc_uiinputprojectsettings.o moc_uioutputprojectsettings.o moc_uiallglobalsettings.o moc_uithreadmanager.o moc_uitriggermanager.o moc_uiinputmodelsettings.o moc_uioutputmodelsettings.o moc_workqueuemanager.o moc_uiuidatamanager.o moc_uiuiactionmanager.o moc_uimodelactionmanager.o moc_kadwidgetsscrollarea.o moc_kadspinbox.o moc_newgenedatetimewidget.o moc_newgenegenerateoutput.o
-F/Users/administrator/Qt/5.1.1/clang_64/lib -L/Users/administrator/newgene/NewGeneUI/NewGene/../../NewGeneBackEnd/OSX/NewGene/DerivedData/NewGene/Build/Products/Debug -lNewGene -L/Users/administrator/boost_1_54_0/lib -lboost_filesystem -framework QtWidgets -framework QtGui -framework QtCore -framework OpenGL -framework AGL
最佳答案
在链接器命令行中,您必须将库(“-l”)放在引用该符号的目标文件之后。也许您已经这样做了,但是您遇到了另一个问题。但由于您没有显示整个命令行,我们无法知道。
关于c++ - Clang 链接器报告 "symbol not found",尽管 'nm -m' 显示该名称存在于被链接的库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20599721/
在过去的几个月里,我一直在研究 Haskell,我遇到了一个我不太确定如何处理的单子(monad)的情况。 我有一个 a -> m a 类型的值第二个类型为 m (a -> a)我需要对它们进行组合,
仿函数有 (a -> b) -> m a -> m b 应用程序有 f (a -> b) -> f a -> f b Monad 有 m a -> (a -> m b) -> m b 但是,是否有扩展
我是 Haskell 的新手,我想知道是否有比 Hoogle 更好的方法来确定一个库功能是否重复? 举个例子:我有很多函数f :: Monad a => a -> m a我想链接在一起,比如 f123
将存储在一系列列表中的 m、m、n 维数组组合成一个 m、m、n 维数组的方法是什么? 示例: 这是三个包含 m,m,n 维数组的列表: list1 <- array (1, dim = c(5, 5
有没有办法写一个函数f::(a -> b -> ... -> t) -> (Monad m => m a -> m b -> ... -> m t ),基本上是 liftMn 对于任何 n? (编辑:
我有一个像这样的 pandas 数据框: df = pd.DataFrame({'A':[1,3,2,9],'B':[2,1,2,7],'C':[7,2,4,6],'D':[8,1,6,4]},ind
这个问题来自文章“Trivial Monad”,地址:http://blog.sigfpe.com/2007/04/trivial-monad.html 。提供的答案是 h x y = x >>= (
所以>>= :: m a -> (a -> m b) -> m b和>> :: m a -> m b -> m b . 而 f b -> f a . 但我想要一些能m a -> (a -> m b)
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 3 年前。 Improve
当我安装 rakudo来源: $ git clone git@github.com:rakudo/rakudo.git $ cd rakudo $ perl Configure.pl --gen-mo
我正在尝试通过查看一些练习来提高我的 Idris 技能 Software Foundations (最初是为 Coq 设计的,但我希望对 Idris 的翻译不会太糟糕)。我在使用 "Exercise:
我想知道以下是否可行。 与服务器交换密码时,应保护密码。因此,用户可以使用生成的 key kUser 来加密密码。 Encrypt(m, kUser) 生成加密消息 eU(m)。现在用户将此信息发送到
这两个表之间存在什么样的关系(1:1、1:m、m:m,等等)? CREATE TABLE IF NOT EXISTS `my_product` ( `id` int(11) NOT NULL au
有人可以解释类型的含义以及如何实现吗? class Foldable f where foldMap :: (Monoid m) => (a -> m) -> f a -> m 基于 https:
例如,在 MVC 应用程序中,我可以使用 Html 助手来创建这样的标签: @Html.LabelFor(m => m.ProductName) 我没有在任何地方声明变量“m”,但 IDE 会自动找出
更新:澄清、更明确的重点和缩短的示例: 我可以避免 M op+(M&&,M&&) 过载吗?假设,我想很好地处理 RValues?我想其他三个重载是必需的。 我首先使用 (&&,&&) 重载的原因: 通
假设我有一个函数,它接受两个向量并返回一个整数,例如一个向量中也存在另一个向量中的元素数量。喜欢: f m [,1] [,2] [,3] [1,] "c" "i" "c" [2,] "
我想将字符串(字幕)转换为: 585 00:59:59,237 --> 01:00:01,105 - It's all right. - He saw us! 586 01:00:01,139 -->
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
是否可以将 Linux 中的大文件将 d.m.Y h:m:s 转换为 Y-d-m h:m:s? 示例数据 "30.07.2016 00:00:00",DN123,PAPN,PAPN,TEST,9189
我是一名优秀的程序员,十分优秀!