Firebird数据库动态库的麻烦

时间:2013-11-09 12:14:26

标签: windows qt dll firebird2.5

我在这里遇到了一些奇怪的问题。我在我的电脑上构建了一些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  );

2 个答案:

答案 0 :(得分:0)

要打开Firebird数据库,您需要安装并运行Firebird服务器(您可能在开发计算机上安装),或者您需要使用Firebird Embedded,它具有单独的DLL(fbembed.dll而不是fbclient.dll)。

答案 1 :(得分:0)

你必须在qsqlibase.dll文件夹中插入./sqldrivers插件,并且必须根据fbclient.dll的适当版本(目标计算机上使用的版本)构建它能够连接到数据库。如果在依赖性walker中打开'qsqlibase.dll`,则可以看到fbclient.dll依赖项。