我们即将通过IBPP将firebird数据库集成到我们的软件中。根据{{3}},这应该是可能的。
我们已经设法在服务运行时通过IBPP使用firebird数据库。但是,我们希望避免运行服务。在Windows上我们已经完成了这个 - 但在linux方面有两个主要区别:
在Windows上,不需要进行安装。在Linux上似乎是,the firebird documantation说:
最后,您不能只将libfbembed.so与您的应用程序一起发送,并使用它连接到本地数据库。在Linux下,您始终需要正确安装的服务器,无论是Classic还是Super。
这是真的吗?我发现firebird文档有时会过时。如果这仍然有效,如何处理此安装?我们可以在客户的电脑上运行它吗?我查看了shell脚本。它启动了一项服务。对我来说,似乎在安装过程中需要运行此服务。无论如何,如果服务仅针对安装运行并且之后永远不需要,这将没有问题 - 但我不确定这一点。
在Windows上你只需要通过loadlibrary加载DLL:我们把fbembed.dll,icuuc30.dll和icudt30.dll放在any_dirctory上,改变了IBPP中嵌入dll被调用到loadlibary的段落(“any_directory \ fbembed.dll” “)并将any_directory添加到PATH变量中。现在一切都有效。 (旁白:通过这样做,可以通过我们使用IBPP创建的DLL调用数据库。这个DLL可以被我们提供给客户的每个EXE使用,同时关心EXE所在的路径。)
但是在Linux上,我没有找到完成此操作的代码。在这个docs上,似乎需要一个特殊的目录结构。这真的是必要的吗?是否可以将.so文件放在any_directory上并从another_dirctory运行应用程序?是否需要在IBPP中的Linux部分添加loadlibary? (顺便说一句:我的问题是我无法真正测试,因为Linux集成正在为我做其他人)。