Это так же, как и любой другой WINAPI
// assuming you are using windows
LPCTSTR lpszXml = _T("<xml> </xml>");
TCHAR szResult[1000] = _T("");
HMODULE hModule = LoadLibrary(_T("mylibrary.dll"));
int (*DoWorkFunc)(LPCTSTR lpszXmlData, LPTSTR lpszResult, int cchMaxSize);
*(FARPROC*)&DoWorkFunc = GetProcAddress(hModule, _T("DoWork"));
int nLength = DoWorkFunc(lpszXml, szResult, 1000);
_tprintf(_T("input [%s] output [%s] length of the result [%d]\n")
, lpszXml, szResult, nLength);
FreeLibrary(hModule);
// warning: no error handling is performed
Edit:
Поскольку я говорю на нескольких языках, я могу приблизительно угадать, что спросил ОП. Вероятно, это так:
Я нашел много способов [в интернете] загрузить файл DLL и вызвать внутри него функцию. Но те, что я нашел, включают в себя простые функции, такие как int add(int a, int b)
. Они получают только возвращаемое значение из функции. То, что я хочу сделать, это передать большой кусок данных и получить еще один большой кусок данных из функции. Как я могу передать большой кусок данных и получить большой кусок данных в качестве возвращаемого значения?