如何为加载的QLibrary lib指定工作目录?

时间:2016-02-02 14:29:09

标签: c++ qt dll qlibrary

问题是: 我有一个Qt应用程序,动态加载库并从该库执行一个函数(参见代码示例)

...
QLibrary library( "d:/Libs/MyLib.dll" );
if ( !library.load( ) )
    qDebug( ) << library.errorString( );
if ( library.load( ) )
    qDebug( ) << "library loaded";

typedef void ( *StartPrototype ) ( );
StartPrototype Start = ( StartPrototype ) library.resolve( "Start" );
if ( !Start )
{
    qDebug() << "Start( ) failed!";
}

Start();
...

Start()函数的defenition加载dll看起来像:

extern "C" __declspec( dllexport ) void Start( )
{
    ofstream myfile( "example.txt" );
    if ( myfile.is_open( ) )
    {
        myfile << "This is a line.\n";
        myfile.close( );
    }
}

我的Qt应用程序位于 d:/Projects/MyApp.exe ,当我运行它时, example.txt 会出现在 d:/ Projects / example.txt (作为 MyApp.exe 的当前工作目录)

但我想将 example.txt 保存在我的dll所在的同一目录中( d:/Libs/example.txt )。 如果不直接指定路径,我可以这样做吗?我的意思是有没有办法为加载的lib及其中的所有函数指定工作目录?如何将dll路径设置为dll函数的当前工作目录(例如,创建文件)。感谢。

0 个答案:

没有答案