我在这里遇到了一些奇怪的问题。我在我的电脑上构建了一些app,Debug和Release,它运行正常。当我将其复制到其他PC时,没有任何开发内容就会出现问题:
我的应用程序应该打开一些firebird数据库文件.FDB
并从那里获取一些数据。
问题有点复杂(对不起,我的英语很糟糕),但我试着解释一下
在我的电脑上
我在已构建的.exe文件夹中获得了fbclient.dll
。如果我从我的.exe
文件的目录中删除它 - 出现与其他PC相同的错误 - 它只是打开.FDB
文件。当.dll
出现在它的位置时 - 一切正常。
当我使用Dependency Walker
并打开myapp.exe
时 - 没有任何关于Firebird .dll
文件的内容!这就像它根本不使用fbclient.dll
甚至gds32.dll
,但我想这不是真的!
在其他电脑上
fbclient.dll
就在myapp.exe
的位置。但它没有办法打开任何数据库文件 - 应用程序无法正常工作!我试图安装Firebrid 2.5
(在我的电脑上我得到了相同的),但它没有改变任何东西。并再次Dependency Walker
找不到与.dll
绑定的任何firbird数据库myapp.exe
。
我希望你理解这个问题。
如何让myapp.exe
在其他PC上打开`FDB文件?
P.S。
已使用Qt
创建应用,如果此信息可以提供帮助
UPD 我厌倦了,但它也没有帮助(但它帮助了许多其他人):
将sqldrivers
复制到myapp.exe
的文件夹,并在main.cpp
QStringList list_path;
QDir dir = QDir(app.applicationDirPath()+"./sqldrivers");
list_path << dir.absolutePath () << app.libraryPaths ();
app.setLibraryPaths( list_path );
答案 0 :(得分:0)
要打开Firebird数据库,您需要安装并运行Firebird服务器(您可能在开发计算机上安装),或者您需要使用Firebird Embedded,它具有单独的DLL(fbembed.dll
而不是fbclient.dll
)。
答案 1 :(得分:0)
你必须在qsqlibase.dll
文件夹中插入./sqldrivers
插件,并且必须根据fbclient.dll
的适当版本(目标计算机上使用的版本)构建它能够连接到数据库。如果在依赖性walker中打开'qsqlibase.dll`,则可以看到fbclient.dll
依赖项。