- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在 MATLAB 中编写一个 MEX 文件,它使用 C 中的 CPLEX API 来解决线性规划问题。
不幸的是,当我尝试编译时遇到了“未找到体系结构 x86_64 的符号”问题,我不知道如何解决它。我在下面包含了 (MATLAB) 输出的副本。我需要做什么才能编译成功?
还有很多链接器“无法创建紧凑展开”错误,这些错误与寄存器分配和保存有关。太多了,我删除了其中的 80% 以使其更具可读性。这些有关系吗?它们值得关注吗?
一些其他可能有用的信息:
这是 (MATLAB) 输出:
----------------------------------------------------------------
-> MATLAB = /Applications/MATLAB_R2011b.app
-> CC = llvm-gcc-4.2
-> CC flags:
CFLAGS = -fno-common -no-cpp-precomp -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5 -fexceptions
CDEBUGFLAGS = -g
COPTIMFLAGS = -O2 -DNDEBUG
CLIBS = -L/Applications/MATLAB_R2011b.app/bin/maci64 -lmx -lmex -lmat -lstdc++
arguments = -DMX_COMPAT_32
-> CXX = llvm-g++-4.2
-> CXX flags:
CXXFLAGS = -fno-common -no-cpp-precomp -fexceptions -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5
CXXDEBUGFLAGS = -g
CXXOPTIMFLAGS = -O2 -DNDEBUG
CXXLIBS = -L/Applications/MATLAB_R2011b.app/bin/maci64 -lmx -lmex -lmat -lstdc++
arguments = -DMX_COMPAT_32
-> FC = gfortran
-> FC flags:
FFLAGS = -fexceptions -m64 -fbackslash
FDEBUGFLAGS = -g
FOPTIMFLAGS = -O
FLIBS = -L/Applications/MATLAB_R2011b.app/bin/maci64 -lmx -lmex -lmat -L -lgfortran -L -lgfortranbegin
arguments = -DMX_COMPAT_32
-> LD = llvm-gcc-4.2
-> Link flags:
LDFLAGS = -Wl,-twolevel_namespace -undefined error -arch x86_64 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5 -bundle -Wl,-exported_symbols_list,/Applications/MATLAB_R2011b.app/extern/lib/maci64/mexFunction.map
LDDEBUGFLAGS = -g
LDOPTIMFLAGS = -O
LDEXTENSION = .mexmaci64
arguments = -L/Users/berk/Applications/IBM/ILOG/CPLEX_Studio_Academic123/cplex/lib/x86-64_darwin9_gcc4.0/static_pic -lilocplex -lcplex
-> LDCXX =
-> Link flags:
LDCXXFLAGS =
LDCXXDEBUGFLAGS =
LDCXXOPTIMFLAGS =
LDCXXEXTENSION =
arguments = -L/Users/berk/Applications/IBM/ILOG/CPLEX_Studio_Academic123/cplex/lib/x86-64_darwin9_gcc4.0/static_pic -lilocplex -lcplex
----------------------------------------------------------------
-> llvm-gcc-4.2 -c -I/Users/berk/Applications/IBM/ILOG/CPLEX_Studio_Academic123/cplex/include/ -I/Applications/MATLAB_R2011b.app/extern/include -I/Applications/MATLAB_R2011b.app/simulink/include -DMATLAB_MEX_FILE -fno-common -no-cpp-precomp -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5 -fexceptions -DMX_COMPAT_32 -g "addcutsmx.c"
-> llvm-gcc-4.2 -g -Wl,-twolevel_namespace -undefined error -arch x86_64 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5 -bundle -Wl,-exported_symbols_list,/Applications/MATLAB_R2011b.app/extern/lib/maci64/mexFunction.map -o "addcutsmx.mexmaci64" addcutsmx.o -L/Users/berk/Applications/IBM/ILOG/CPLEX_Studio_Academic123/cplex/lib/x86-64_darwin9_gcc4.0/static_pic -lilocplex -lcplex -L/Applications/MATLAB_R2011b.app/bin/maci64 -lmx -lmex -lmat -lstdc++
ld: warning: could not create compact unwind for _CPXLmsg: register 12 saved somewhere other that in frame
ld: warning: could not create compact unwind for _CPXsetbranchcallbackfunc: register saved more than once (might be shrink wrap)
Undefined symbols for architecture x86_64:
"_kCFAllocatorDefault", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_kIOMasterPortDefault", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_IOServiceMatching", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_IOServiceGetMatchingService", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"___CFStringMakeConstantString", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_IORegistryEntryCreateCFProperty", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_CFGetTypeID", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_CFStringGetTypeID", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_CFStringGetCString", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_CFDataGetTypeID", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_CFDataGetLength", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_CFDataGetBytePtr", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_CFRelease", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
"_IOObjectRelease", referenced from:
_ilm_fun_000 in libcplex.a(env.o)
_ilm_fun_121 in libcplex.a(env.o)
_ilm_api_004 in libcplex.a(env.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
mex: link of ' "addcutsmx.mexmaci64"' failed.
Error using mex (line 206)
Unable to complete successfully.
问题已解决:
为了将来引用,警告消息在使用 CPLEX 时不是问题。实际问题是缺少符号,这些符号通常捆绑在 CoreFoundation 和 XCode 4.2 中包含的 IOKit 框架中。通常可以使用 -framework CoreFoundation 和 -framework IOKit 标志来包含它们,但 MATLAB 中的 mex 命令不支持此功能。不过,幸运的是,您可以使用 LDFLAGS='\$LDFLAGS -framework CoreFoundation -framework IOKit'...为链接过程添加基于自定义的标志...
最佳答案
基本问题是链接器,其工作是在代码和共享库的编译位之间匹配所有函数调用,但无法找到创建完整可执行文件所需的某些函数。如果 undefined symbol 列表(缺失函数和其他缺失项的列表)包含您忘记编写的函数的名称,那么您将需要编写它。
但是,在这种情况下,丢失的符号似乎都是您希望由某种形式的标准库定义的东西。 (_ 和 __ 前缀表明了这一点)。在这种情况下,您需要使用 -l
选项将正确的库添加到链接器的搜索路径。在你的related post ,-lcplex
选项只对 cplex 库执行此操作,然后允许链接器找到缺少的 CPLEX 函数。
我不认识特定的符号,但使用 google 搜索一下可能会帮助您找到所需的库。作为起点,根据 this somewhat dated post ,一些缺失的符号似乎是 CoreFoundation (MACOSX) 符号,您应该能够在/Library/Frameworks 文件夹之一中找到它们。
CPLEX 库也有可能是使用不同(较旧?)版本的 OSX 文件构建的。如果是这种情况,您可能会从 CPLEX 查找更新的(Lion 特定的?)库文件,和/或查看 MATLAB/gcc 是否具有向后兼容性选项以强制使用旧的 OSX 框架。
希望这对您有所帮助。
关于使用 CPLEX API 的 MEX 文件的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9762538/
今天我在一个 Java 应用程序中看到了几种不同的加载文件的方法。 文件:/ 文件:// 文件:/// 这三个 URL 开头有什么区别?使用它们的首选方式是什么? 非常感谢 斯特凡 最佳答案 file
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我有一个 javascript 文件,并且在该方法中有一个“测试”方法,我喜欢调用 C# 函数。 c# 函数与 javascript 文件不在同一文件中。 它位于 .cs 文件中。那么我该如何管理 j
需要检查我使用的文件/目录的权限 //filePath = path of file/directory access denied by user ( in windows ) File fil
我在一个目录中有很多 java 文件,我想在我的 Intellij 项目中使用它。但是我不想每次开始一个新项目时都将 java 文件复制到我的项目中。 我知道我可以在 Visual Studio 和
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我有 3 个组件的 Twig 文件: 文件 1: {# content-here #} 文件 2: {{ title-here }} {# content-here #}
我得到了 mod_ldap.c 和 mod_authnz_ldap.c 文件。我需要使用 Linux 命令的 mod_ldap.so 和 mod_authnz_ldap.so 文件。 最佳答案 从 c
我想使用PIE在我的项目中使用 IE7。 但是我不明白的是,我只能在网络服务器上使用 .htc 文件吗? 我可以在没有网络服务器的情况下通过浏览器加载的本地页面中使用它吗? 我在 PIE 的文档中看到
我在 CI 管道中考虑这一点,我应该首先构建和测试我的应用程序,结果应该是一个 docker 镜像。 我想知道使用构建环境在构建服务器上构建然后运行测试是否更常见。也许为此使用构建脚本。最后只需将 j
using namespace std; struct WebSites { string siteName; int rank; string getSiteName() {
我是 Linux 新手,目前正在尝试使用 ginkgo USB-CAN 接口(interface) 的 API 编程功能。为了使用 C++ 对 API 进行编程,他们提供了库文件,其中包含三个带有 .
我刚学C语言,在实现一个程序时遇到了问题将 test.txt 文件作为程序的输入。 test.txt 文件的内容是: 1 30 30 40 50 60 2 40 30 50 60 60 3 30 20
如何连接两个tcpdump文件,使一个流量在文件中出现一个接一个?具体来说,我想“乘以”一个 tcpdump 文件,这样所有的 session 将一个接一个地按顺序重复几次。 最佳答案 mergeca
我有一个名为 input.MP4 的文件,它已损坏。它来自闭路电视摄像机。我什么都试过了,ffmpeg , VLC 转换,没有运气。但是,我使用了 mediainfo和 exiftool并提取以下信息
我想做什么? 我想提取 ISO 文件并编辑其中的文件,然后将其重新打包回 ISO 文件。 (正如你已经读过的) 我为什么要这样做? 我想开始修改 PSP ISO,为此我必须使用游戏资源、 Assets
给定一个 gzip 文件 Z,如果我将其解压缩为 Z',有什么办法可以重新压缩它以恢复完全相同的 gzip 文件 Z?在粗略阅读了 DEFLATE 格式后,我猜不会,因为任何给定的文件都可能在 DEF
我必须从数据库向我的邮件 ID 发送一封带有附件的邮件。 EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Adventure Works Admin
我有一个大的 M4B 文件和一个 CUE 文件。我想将其拆分为多个 M4B 文件,或将其拆分为多个 MP3 文件(以前首选)。 我想在命令行中执行此操作(OS X,但如果需要可以使用 Linux),而
快速提问。我有一个没有实现文件的类的项目。 然后在 AppDelegate 我有: #import "AppDelegate.h" #import "SomeClass.h" @interface A
我是一名优秀的程序员,十分优秀!