如何在我的Haxe / hxcpp构建中包含libsqlite3
How to include libsqlite3 in my Haxe/hxcpp build?
我有一个非常简单的测试,将SQLite3包含在我的Haxe构建中(我知道它内置了SQLite,但这个问题不仅适用于这里)。它看起来像这样:
@:include("sqlite3.h")
@:buildXml('<files id="haxe" append="true"><compilerflag value="-lsqlite3"/></files>')
extern class SQLite3 {
@:native("sqlite3_open") public static function sqlite3_open(path: String, outReference:Reference<DBPointer>):Int;
}
@:include("sqlite3.h")
@:native("sqlite3")
extern class DBPointer {
}
这不会引发任何Haxe错误,但是当我尝试编译时,我在编译C++收到以下错误:
Undefined symbols for architecture x86_64:
"_sqlite3_open", referenced from:
Main_obj::main() in aea44ed0_Main.o
ld: symbol(s) not found for architecture x86_64
我认为添加您可以看到的buildXml
指令足以动态引用macOS SQLite库,但事实似乎并非如此。
我怎样才能在这里包含SQLite?
根据 hxcpp 构建 XML 文档,我认为您应该替换
<compilerflag value="-lsqlite3"/>
跟
<flag value="-lsqlite3"/>
或
<lib base="sqlite3"/>
我对使用 CPP 外部库了解不多(所以这并不能完全回答你的问题),但我知道 SQLLite 实现内置于 Haxe 中(适用于 cpp、hl、java、lua、宏、neko、php 和 python 平台)。以下是一些相关文档:
- https://api.haxe.org/sys/db/Sqlite.html
- https://api.haxe.org/sys/db/Connection.html
- https://api.haxe.org/sys/db/ResultSet.html
这是一个片段(来自这个完整的示例要点。
var conn = sys.db.Sqlite.open("test.db");
var rs = conn.request('
CREATE TABLE IF NOT EXISTS artists_backup
(
artistid INTEGER PRIMARY KEY AUTOINCREMENT,
name NVARCHAR
);
');
var rs = conn.request('INSERT INTO artists_backup (name) VALUES ("John");');
请注意,ResultSet
是一个Iterator<Dynamic>
,但您可以添加类型提示以保持数据库代码美观且类型安全:
typedef RecordType = { name:String, id:Int };
for (record in (rs:Iterator<RecordType>)) {
// While record is still a Dynamic object, the TypeDef alias tells
// the compiler that .name and .id are the only valid fields.
}
相关文章:
- 以现代 CMake 方式控制包含的库中的构建选项(测试等)
- VS:在构建/exe中包含资源文件
- 如何使用 cmake 在代码中包含、构建和调试共享库 (.so)?
- 尝试使用 MSVC 从源代码构建 qt 创建器:无法打开包含文件:"stddef.h":没有这样的文件或目录
- 在基于命令行的QT插件构建中包含库
- Eclipse IDE C/C++ 自动包含来自定制构建脚本的路径
- 为什么我们需要构建一个提升库,仅仅包含头文件还不够吗,因为提升是模板
- 如何设置 CMake 来构建包含路径包含的代码,如 #include < libdir/lib>?
- SQLite - 从源代码构建库或将源代码直接包含在我的项目中
- 如何在粒子(Spark)的本地构建中包含第三方库?
- Windows 套接字和身份验证构建在包含 Poco-Library 时失败
- 如何构建包含C 11的恒定表达式的代码
- 如何使用 Bazel 构建包含 openssl 的第三方 c++ 库
- 从 Eclipse 索引中排除构建中包含的文件
- 如何构建包含CUDA功能和C 模板功能的代码
- 如何在Android.bp文件中包含预构建的库
- 节点构建失败。无法在包含目录的子目录中找到库头文件
- 在构建基于 C++ 的软件时包含 QtGui 文件的问题
- IOS 构建包含 IDA 中可见的符号
- OpenNI2.0 -在Visual Studio中构建包含的示例项目时获得LNK错误