【发布时间】:2023-04-06 01:27:01
【问题描述】:
我有一个在 Ubuntu Linux 中开发的 C++ 项目。这个 C++ 项目不是我写的。此外,它在 Ubuntu 下运行没有任何问题。
我正在尝试使用 GCC/G++ 编译器和 Visual Studio 2019 IDE 在 Windows 10 下编译项目。我离成功很近了。
该项目的 CMakeList.txt 文件中有以下几行:
find_package(sqlite3)
if (SQLITE3_FOUND)
message("Sqlite3 found")
include_directories(${SQLite3_INCLUDE_DIRS})
SET(CMAKE_CXX_FLAGS_RELEASE " -DSQLITE3 ${CMAKE_CXX_FLAGS_RELEASE}")
SET(CMAKE_CXX_FLAGS_DEBUG " -DSQLITE3 ${CMAKE_CXX_FLAGS_DEBUG}")
SET(CMAKE_EXE_LINKER_FLAGS "-lsqlite3")
SET(CMAKE_SHARED_LINKER_FLAGS "-lsqlite3")
else()
message("Sqlite3 not found")
endif (SQLITE3_FOUND)
我需要 lsqlite3。我找到了the source code,但使用 GCC 编译失败:
C:\Users\pc\Downloads\sqlite3\lsqlite3-master\lsqlite3-master>mingw32-make
FIND: Parameter format not correct
FIND: Parameter format not correct
luarocks make
Error: Please specify which rockspec file to use.
luarocks make
Error: Please specify which rockspec file to use.
C:\Users\pc\Downloads\sqlite3\lsqlite3-master\lsqlite3-master>mingw32-make lsqlite3complete-0.9.4-2.rockspec
mingw32-make: Nothing to be done for 'lsqlite3complete-0.9.4-2.rockspec'.
C:\Users\pc\Downloads\sqlite3\lsqlite3-master\lsqlite3-master>
文件 lsqlite3.c 包含#include "lua.h" 和#include "lauxlib.h"。看来他们来自Lua for Windows项目。
如何为 Windows 编译 lsqlite3 并将其链接到我现有的 CPP 项目的端口?
应该用 GCC 还是 Lua 编译?
【问题讨论】:
-
"这告诉我,我需要 lsqlite3" - 嗯?对我来说,“multiple definition”错误除了缺少库之外什么都没有。例如。
../bin/libMyLinuxBasedCppProject.a(DataTable.cc.obj):C:\Users\pc\source\repos\MyLinuxBasedCppProject\out\build\Mingw64-Debug/../../../src/utils/string_utils.hh:139: first defined here行告诉我您在 header 中定义一个(非内联)函数,这是不受欢迎的:stackoverflow.com/questions/583255/… -
FIND: Parameter format not correct可能意味着makefile 是为Linux 编写的并且使用find命令。 Windows 和 Linux 上find之间的参数不同。所以,我认为您使用的makefile不是针对 Win32。