1

我在这里遇到了一些奇怪的问题。我在我的电脑上构建了一些应用程序,调试和发布,它工作正常。当我将它复制到其他 PC 时,没有任何开发内容,就会出现问题:

我的应用程序应该打开一些 firebird 数据库文件.FDB并从那里获取一些数据。

问题有点复杂(对不起,我的英语不好),但我试着解释一下

在我的电脑上

我进入fbclient.dll了带有 .exe 的文件夹。如果我从我的.exe文件所在的目录中删除它 - 出现与其他电脑相同的错误 - 它只是无法打开 .FDB文件。什么时候.dll在它的地方 - 一切都很好。

当我使用Dependency Walker并打开时myapp.exe- 没有任何 Firebird.dll文件!这就像它不使用fbclient.dll甚至根本不使用gds32.dll ,但我猜这不是真的!

在其他电脑上

fbclient.dll在它的地方myapp.exe。但是它无法打开任何数据库文件 - 应用程序不起作用!我尝试安装 Firebrid 2.5(在我的电脑上我得到了相同的)但它没有改变任何东西。再次Dependency Walker发现没有任何 firbird 数据库.dllmyapp.exe.

我希望你明白这个问题。

我怎样才能myapp.exe在其他 PC 上打开`FDB 文件?

附言

应用程序创建于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  );
4

2 回答 2

0

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

于 2013-11-09T14:11:56.400 回答
0

您必须qsqlibase.dll在文件夹中有插件,./sqldrivers并且必须针对适当版本fbclient.dll(在目标计算机上使用的版本)构建它才能连接到数据库。fbclient.dll如果您在依赖项walker 中打开“qsqlibase.dll”,您可以看到依赖项。

于 2013-11-10T08:01:10.630 回答