小编Vla*_*tin的帖子

C:与MinGW-w64静态/动态链接的正确方法

直观地:

  • MinGW-w64是GNU编译器工具(GCC等)的Windows端口。
  • Windows的预编译二进制文件是.dll(动态链接)/ .lib(静态链接)。
  • 但是,MinGW-w64使用GNU编译器工具,因此需要.so/ .abinary。

我发现了什么:

不幸的是,我在MinGW和MinGW-w64上找不到明确的文档来说明在动态/静态链接库时正确与错误的地方。

根据我的经验,我一直能够动态链接到.dll。一次,我能够静态链接到.lib(使用-static标志)。

题:

.dll/ .a与MinGW的-W64 GCC工具链编译的二进制文件时拨出动,静链接库?换句话说,为MSVC生成的动态库和为GCC生成的静态库?

windows gcc dynamic-linking mingw-w64

4
推荐指数
1
解决办法
6938
查看次数

CMake:target_include_directories() 找不到头文件

在我的main.cpp文件的顶部,No such file or directory被抛出#include <sqlite3.h>.

手动构建代码g++ -I"C:\Libraries\64_bit\SQLite3\include\" -L"C:\Libraries\64_bit\SQLite3\bin\" -lsqlite3 main.cpp Class1.cpp Class1.h Class2.cpp Class2.h -o main不会引发错误。

CMake 似乎无法找到标头,即使我已经明确描述了它在我的文件系统中的位置。根据 的文档target_include_directories(),这应该足够了:

指定的包含目录可以是绝对路径或相对路径。按调用顺序重复调用相同的附加项目。

为什么target_include_directories()即使我提供了确切的绝对路径,该函数也找不到标题?

我正在 64 位 Windows 10 机器上开发,CLion 设置为使用 MinGW-w64g++编译器进行编译。

  • 我已经下载了 64 位 Windows 预编译二进制文件,sqlite3.dll并将其本地存储在C:\Libraries\64_bit\SQLite3\bin\.
  • 为了访问 SQLite C++ 函数,我还下载了 SQLite3 的合并源代码并将所有源文件存储在C:\Libraries\64_bit\SQLite3\include\.

我在 CLion 中构建了我的项目,它本质上是 CMake 的一个花哨的 GUI 包装器。在我的 中CMakeLists.txt,我包含了 SQLite3 的标题并链接sqlite3如下:

cmake_minimum_required(VERSION 3.7)
project(My_Project)

set(CMAKE_CXX_STANDARD 11) …
Run Code Online (Sandbox Code Playgroud)

c++ cmake clion

4
推荐指数
1
解决办法
9293
查看次数

标签 统计

c++ ×1

clion ×1

cmake ×1

dynamic-linking ×1

gcc ×1

mingw-w64 ×1

windows ×1