Проблема в:
У меня есть приложение 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 () из загруженной dll выглядит так:
extern "C" __declspec( dllexport ) void Start( )
{
ofstream myfile( "example.txt" );
if ( myfile.is_open( ) )
{
myfile << "This is a line.\n";
myfile.close( );
}
}
Мое приложение Qt находится по адресу д: /Projects/MyApp.exe и когда я запускаю его, example.txt появляется в д: /Projects/example.txt (как текущий рабочий каталог для MyApp.exe)
Но я хочу сохранить example.txt в той же директории, где находится моя dll (д: /Libs/example.txt).
Могу ли я сделать это без указания пути напрямую? Я имею в виду, есть ли способ указать рабочий каталог для загруженной библиотеки и всех функций в ней? Как установить путь DLL в качестве текущего рабочего каталога для функций DLL (например, создание файла). Благодарю.
Задача ещё не решена.
Других решений пока нет …