Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何为加载的QLibrary库指定工作目录?_C++_Qt_Dll_Qlibrary - Fatal编程技术网

C++ 如何为加载的QLibrary库指定工作目录?

C++ 如何为加载的QLibrary库指定工作目录?,c++,qt,dll,qlibrary,C++,Qt,Dll,Qlibrary,问题是: 我有一个Qt应用程序,它动态加载一个库并执行该库中的一个函数(参见代码示例) 。。。 QLibrary库(“d:/Libs/MyLib.dll”); 如果(!library.load()) qDebug()可能会使用QDir::setCurrent()函数吗?谢谢,它很管用。但是,如果我有几个dll(每个dll都有自己的Start()函数)并通过信号调用这些函数,例如,会怎么样呢。在这种情况下,我应该在每个Start()语句之前使用QDir()::setCurrent?setCurre

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

。。。
QLibrary库(“d:/Libs/MyLib.dll”);
如果(!library.load())

qDebug()可能会使用
QDir::setCurrent()
函数吗?谢谢,它很管用。但是,如果我有几个dll(每个dll都有自己的Start()函数)并通过信号调用这些函数,例如,会怎么样呢。在这种情况下,我应该在每个Start()语句之前使用QDir()::setCurrent?setCurrent是如何工作的?当我设置cuurentDir,然后运行函数,然后另一个Start()方法将重写我的上一个Dir,第一个文件将保存在第二个Dir中时,会出现这种情况吗?您可以将DLL位置作为参数传递到Start中,并使用它来获取绝对文件路径,而不仅仅是
example.txt
...
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();
...
extern "C" __declspec( dllexport ) void Start( )
{
    ofstream myfile( "example.txt" );
    if ( myfile.is_open( ) )
    {
        myfile << "This is a line.\n";
        myfile.close( );
    }
}