我正在编写一个嵌入 TCL 的 C++ 应用程序,并且为了它的数据库操作,我还在其中嵌入了 SQLite。我希望能够执行以下操作:
- 从嵌入式 TCL interpeter 为嵌入式 SQLite 编写 TCL 脚本。
- 将 SQLite 连接从嵌入式 TCL 解释器传递到 C++,并在 C++ 中使用它进行数据库操作,反之亦然。
我将不胜感激。
最佳答案
Tcl 8.6 应该附带 SQLite 接口(interface)的构建,sqlite3
包。但是,没有(官方)方法可以与您的 C++ 代码共享包中的数据库连接;包中根本没有可从 C++ 调用以获取连接的 API。 官方的解决方法是从你的 C++ 代码创建另一个连接,这应该不会太麻烦,除非你在两种语言绑定(bind)中的查询之间进行奇怪的混合,非常 不是正常用例。
您可以通过使用 Tcl_GetCommandInfo()
检索 Tcl 数据库句柄命令的 ClientData
字段等来破解它。然后可以将其转换为指向结构的指针,该结构的第一个字段是 sqlite3*
句柄,就像您使用 sqlite3_open()
获得的一样。既凌乱又脆弱。此外,您仍然需要遵守通常的规则,例如需要保持在一个线程中。这真的不是我推荐的!
关于c++ - 使用 TCL 编写嵌入式 SQLite 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46661289/