C++ 使用g+链接到外部库+;
我下载了,我想编译代码。不幸的是,构建脚本应该与VisualStudioC编译器一起工作,但我不能在我的机器上安装/使用它。因此,我尝试修改脚本(以及部分代码),以便能够使用GCC编译它。但我对编译复杂代码是完全陌生的(我通常只使用gcc*.c-o outfile.exe) 我的问题是: 在某些文件中,有一个与C++ 使用g+链接到外部库+;,c++,c,gcc,g++,C++,C,Gcc,G++,我下载了,我想编译代码。不幸的是,构建脚本应该与VisualStudioC编译器一起工作,但我不能在我的机器上安装/使用它。因此,我尝试修改脚本(以及部分代码),以便能够使用GCC编译它。但我对编译复杂代码是完全陌生的(我通常只使用gcc*.c-o outfile.exe) 我的问题是: 在某些文件中,有一个与 #pragma comment(lib, "libxml2.lib") 这不适用于GCC 可以在。\shared\parser\libxml2.lib 头文件位于。\shared\p
#pragma comment(lib, "libxml2.lib")
这不适用于GCC
可以在。\shared\parser\libxml2.lib
头文件位于。\shared\parser\libxml\
我使用
fmusdk\fmu20\src\co_simulation>..\build_fmusim_cs_gcc.bat
脚本如下所示:
set SRC=main.c ..\shared\sim_support.c ..\shared\xmlVersionParser.c ..\shared\parser\XmlParser.cpp ..\shared\parser\XmlElement.cpp ..\shared\parser\XmlParserCApi.cpp
set INC=-I ..\shared\include -I ..\shared -I ..\shared\parser\libxml -I ..\shared\parser
set LIB=-L ..\shared\include -L ..\shared -L ..\shared\parser\libxml -L ..\shared\parser
set OPTIONS=-D FMI_COSIMULATION -D STANDALONE_XML_PARSER -D LIBXML_STATIC -v
g++ %INC% %OPTIONS% %SRC% %LIB% -lxml2 -o fmu20sim_cs.exe
但我收到以下错误消息:
c:/users/<username>/userprograms/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lxml2
c:/users//userprograms/mingw/bin/./lib/gcc/mingw32/6.3.0/../../../../../../mingw32/bin/ld.exe:找不到-lxml2
我试着用我在上面找到的东西,但我似乎不起作用
有人能帮忙吗?我做错了什么?在INC和LIB下,我把所有看起来有用的东西都放进去了,但我不知道我到底在做什么
我还有一个日志文件,其中包含批处理文件的详细输出。但我不知道如何上传到这里:(
致以最良好的祝愿,
Martin您应该将
-lxml2
替换为-llibxml2
解释,来自:
还要注意的是,库名“lib.a”
和“lib.lib”
并不等同;如果您有一个库是根据异常的“lib.lib”
约定命名的,那么它将不会被“-l”
规范找到——如果您无法重命名库,则必须使用“-llib”
格式
libxml2.lib
是(相当频繁)混淆库名约定的例子。Visual Studio使用添加.lib
扩展名的约定(这将是xml2.lib
),GCC使用添加lib
前缀和.a
扩展名的约定(这将是libxml2.a
)
根据GCC手册(),您有两种选择:
libxml2.a
,因为当给定-lxml2
选项时,GCC正在查找该文件名。
链接器搜索库的标准目录列表,实际上是一个名为liblibrary.a的文件
-l
(例如,在g++命令行中将-lxml2
更改为libxml2.lib
),然后GCC将精确查找给定名称。
不以特殊识别后缀结尾的文件名被视为对象文件或库的名称。(链接器根据文件内容将对象文件与库区分开来。)如果链接完成,这些对象文件将用作链接器的输入
我认为您的系统上也必须安装了xml2库。可能作为另一个依赖项,首先尝试安装libxml2。但该库已经存在。我还应该做什么?确定吗?您是如何检查的?我不是指您在脚本中提到的那个库(即libxml),如果您确定,那么您可以使用fullpath-Lpath/to/xml2Tried this?:“有关FMU SDK的错误报告、问题或评论,请发送至fmu@QTronic.de.“(我只是从您提供的链接中复制了它。)我将使用选项-llibxml2,因此如果有一天我可以得到它,那么lib仍然可以与VS一起使用。