C ++ DLL问题丢失证书

时间:2014-09-18 05:01:23

标签: c++ dllimport

我是C ++的新手并尝试将现有的C ++代码转换为DLL,以便我可以通过DLL导入从C-sharp调用。代码C ++进行加密和解密。

我已经成功地在C ++控制台应用程序中执行了该功能。但是,当我将相同的代码转换为DLL并尝试通过导入DLL从不同的C ++控制台应用程序运行时,我无法加载应用程序,因为在相同的DLL代码中我有一个证书,它是资源文件夹的一部分,它应该是在执行中可用。

虽然我手动放置了证书,但我不确定为什么DLL无法找到证书。

有什么想法吗?

此致 Zeeshan Qureshi

1 个答案:

答案 0 :(得分:0)

通过调用FindResource(NULL, ...),您使用进程资源表进行解析,而不是DLL。这可以在一个EXE中使用,但是通过将代码移动到DLL以及带有它的资源,您需要查看DLL模块的资源表。

你的DLL的DllMain看起来应该是这样的,如果你还没有,那就添加一个:

HINSTANCE hInstDLL; // <=== LOOK HERE (added global)

BOOLEAN WINAPI DllMain( 
         IN HINSTANCE hDllHandle, 
         IN DWORD     nReason, 
         IN LPVOID    Reserved )
 {
    switch ( nReason )
    {
        case DLL_PROCESS_ATTACH:
            hInstDLL = hDllHandle; // <<=== LOOK HERE (set global)
            break;

        default:
            break;
    }
    return TRUE;
}

从那起你的FindResource调用应该使用hInstDLL作为第一个参数,而不是NULL。这应该让你的资源查找使用适当的资源表。

祝你好运。