2013-11-15 6 views
1

У меня есть проект на C++, который имеет больше зависимостей от DLL-файлов. Как я могу создать исполняемый файл так, чтобы созданный .exe-файл обнаружил файлы .dll в данной папке относительно .exe? Я использую Visual Studio.Скомпилировать исполняемый файл с файлами .dll, DLL-файлы относительно .exe

ответ

1

Вы можете использовать этот код для загрузки библиотеки DLL и вызвать функцию, экспортируемую в DLL:

#include <windows.h> 
#include <iostream> 

/* Define a function pointer for our imported 
* function. 
* This reads as "introduce the new type f_funci as the type: 
*    pointer to a function returning an int and 
*    taking no arguments. 
*/ 
typedef int (*f_funci)(); 

int main() 
{ 
    HINSTANCE hGetProcIDDLL = LoadLibrary("C:\\Documents and Settings\\User\\Desktop \\fgfdg\\dgdg\\test.dll"); 

    if (hGetProcIDDLL == NULL) { 
    std::cout << "could not load the dynamic library" << std::endl; 
    return EXIT_FAILURE; 
    } 

    # resolve function address here 
    f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci"); 
    if (!funci) { 
    std::cout << "could not locate the function" << std::endl; 
    return EXIT_FAILURE; 
    } 

    std::cout << "funci() returned " << funci() << std::endl; 

    return EXIT_SUCCESS; 
} 
1

Чтобы загрузить DLL из относительного каталога ехе все, что вам нужно сделать, это указать путь в формате от "\\mydlldir\\dllnamehere.dll", в отличие от полного пути "driveletter:\\dir\\dir2\\dirwithexeinit\\mydlldir\\dllnamehere.dll".

Первый метод всегда будет выглядеть в каталоге, указанном здесь, где существует exe, где вторая всегда будет выглядеть в указанной точной директории.

Смежные вопросы