1. Если экспортируешь функцию с помощью директивы __declspec(dllexport), то лучше использовать в клиентской программе __declspec(dllimport). Тогда часть проблем будет разруливаться компилятором, а не тобой. 2. Если нужно использовать LoadLibrary, то для экспорта функций лучше использовать DEF файл. Добавь в свой проект текстовый файл с расширением DEF и следующего содержания
| Код | LIBRARY имя-библиотеки EXPORTS TestFunc PRIVATE
|
В твоём коде на первый взгляд видно следующие ошибки: 1. Вместо pOpenXMLFile должно быть pTSTFUNC 2. Если хочешь находить функцию именно по имени TestFunc, то юзай DEF файл или напиши
| Код | extern "C" __declspec(dllexport) void TestFunc(char* FileName) { printf("%s",FileName); }
|
После этого GetProcAddress найдет твою функцию по строке TestFunc, но т.к. TSTFUNC имеет тип компоновки __stdcall (замаскированный макросом CALLBACK), то при попытке вызвать эту функцию стек будет угроблен. Либо напиши:
| Код | ехtern "C" __declspec(dllexport) void __stdcall TestFunc(char* FileName) { printf("%s",FileName); }
|
а в качестве параметра для GetProcAddress передавай строку "_TestFunc@4", либо убери из определения TSTFUNC макрос CALLBACK, либо опять-таки используй DEF файлы. |