应用程序在Visual Studio上运行但不直接运行exe,为什么?

时间:2017-04-08 14:55:04

标签: deployment

这段代码在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);
    }

1 个答案:

答案 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
}