这段代码在Visual Studio 2010(调试/发布)上运行良好,与dll函数的返回值完全相同(ctrl + F5得到输出)。
现在的问题是,当我直接从调试文件夹运行这个exe时,它没有返回值。
问题是什么
typedef int (*One)(const char *);
HMODULE hModule;
One gpfSN = NULL;
int y = 0;
const char *cr = "xyz";
hModule = LoadLibrary(L"send.dll");
if (hModule != NULL)
{
gpfSN = (One)GetProcAddress(hModule, "GetData");
}
if (gpfSN != NULL)
{
CString t;
y = (*gpfSN)(cr);
t.Format(_T("%d"), y);
m_Value.SetWindowTextW(t);
}
if (hModule != NULL)
{
::FreeLibrary(hModule);
}
答案 0 :(得分:0)
您应该添加一些错误报告,因为现在所有错误都会被忽略。
if (hModule != NULL)
{
gpfSN = (One)GetProcAddress(hModule, "GetData");
}
else
{
auto const last_error(::GetLastError());
m_Value.SetWindowTextW(L"LoadLibrary call failed"); // TODO print error code
}