- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用几个库的 C/C++ 程序 x64。
我使用的编译器:Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64
一开始我确实遇到了静态/动态链接的一些问题,但我已经解决了这些问题,并且我可以使用 MD 和 MDd 标志成功编译我的程序。现在,我想摆脱 C 运行时库 DLL。我想使用 MT 标志编译我的应用程序。
我使用的库:samtools 和 zlib(我在生成这两个库时使用 MT 标志)。最后,在链接过程中,即使我在所有编译过程中使用了相同的配置,我也会收到这样的错误。错误信息:
LIBCMT.lib(atox.obj) : error LNK2005: atoll already defined in libbam.lib(bam_import.obj)
myApplication.exe : fatal error LNK1169: one or more multiply defined symbols found
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\x8
6_amd64\link.exe"' : return code '0x491'
生成库和链接的命令:
CC=cl.exe
AR= lib.exe
CFLAGS= /MT -c
INCLUDES= -I. -Iwin32
1st library:
ZLIB: $(OBJS)
$(AR) objectfiles
OBJS:
$(CC) $(CFLAGS) $(INCLUDES) sourcefiles
2nd library:
libbam.lib:$(LOBJS)
$(AR) $(LOBJS) $(BCFOBJS) /out:libbam.lib
BCFOBJ:
$(CC) $(CFLAGS) $(INCLUDES) sourcefiles
.c.obj: // LOBJS are generated here
$(CC) -c $(CFLAGS) $(INCLUDES) $< -o $@
我使用上面生成的库编译我的程序的命令:
CC=cl.exe
LINK=link.exe
FLAGS= -Ox /MT -c
obj1.obj:
$(CC) $(FLAGS) test.cpp $(INCLUDES)
testMain.obj:
$(CC) $(FLAGS) testMain.cpp $(INCLUDES)
testMain.exe: $(OBJ)
$(LINK) obj1.obj testMain.obj $(LIBS) /OUT:testMain.exe
由于 makefile 很长,我尝试稍微简化一下,显示我为每个生成的库使用的标志。
提前致谢。
最佳答案
我已经解决了这个问题。显然,在我拥有的一个所需库的源文件中有一个名为 atoll() 的函数,并且在静态链接时,编译器试图链接系统 atoll() 函数;但是,其中一个已经在那里了。我重命名了所有源文件中的函数,但我无法静态编译我的应用程序。
关于c++ - C/C++ 静态链接错误 (LIBCMT.lib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29826330/
我正在尝试链接一个依赖于多个静态库的 Windows 可执行文件(其中一些我已经构建,一些我还没有)。当我做链接时,我收到了一堆错误,例如: LIBCMT.lib(mlock.obj) : error
我有一个使用 OpenGL 3.2(+libs) 和 FreeType2 的程序。然后是另一个带有 Boost 和 OpenSSL 的程序。 OpenGL 方面是为了确保文本可以被渲染,而 boost
我有一个使用几个库的 C/C++ 程序 x64。 我使用的编译器:Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64
所以这是一个常见错误,但所有帖子都说我需要更加注意我包含的库版本。我正在使用 SDL2、OpenGL 和 SDL_Mixer...除了坚持使用 32 位库外,我没有任何选择。 调试编译正常,但发布给我
是的,我知道 Stackoverflow 上已经有数百篇关于 LNK2001 的帖子。但是他们都没有解决我的问题。所以我在这里发布了我的解决方案。 症状:ATL DLL 编译为 Debug 时正常,但
我有一个模板 VS .NET 2003 项目,同事们在开发他们的软件时复制并定制了它。 模板似乎在一段时间前被更改为将 IgnoreSpecificLibrary 属性设置为具有 libcmt.lib
请帮忙,我花了一整天的时间来编译我的 c++ 应用程序。 我的项目包含一个源文件:Foo.cpp。这是它的代码: #include #include JNIEXPORT jint JNICALL
我正在使用 LLVM 编写语言。我想避免打包 clang 并简单地使用 LLVM 工具(例如 lld、lld-link)。我一直在尝试调用 printf来自我的简单 IR 代码的函数( testinp
我正在编译一个非常简单的main.c: int myfunc(int x, int y){ return x + y; } int main(){ int res = myfunc(2
我想在 Visual Studio 2008 中编译和链接我的项目作为调试项目 (MTd)。该项目包括几个外部 dll,其中一个 dll 与可用的非调试版本(MD 和 MT 版本)一样。现在,如果我尝
我正在使用 MFC 中的 MAPI API 从 Outlook 中获取联系人。 我在“在共享 DLL 中使用 MFC”中使用了发布的 exe,但是这个发布的 exe 在我的电脑上运行但我在另一台无法登
我正在使用 DCMTK 库来读取 Dicom 文件(医学图像处理中使用的图像格式)。我在编译此 DCMTK 源代码时遇到了问题。 DCMTK 使用了一些额外的外部库(zlib、tiff、libpng、
我是一名优秀的程序员,十分优秀!