我正在尝试使用windows.h和wincrypt.h库来构build一个简单的应用程序,以便对一些string进行encryption。
当我调用函数CryptProtectData(&input, NULL, NULL, NULL, NULL, 0, &output);
我得到错误:
error: undefined reference to `_imp__CryptProtectData@28'
我已经search了很多网站,并没有太多了。 我也意识到,Chromium浏览器使用类似的代码作为我的encryption和解密login,我没有做不同的事情。
我正在使用QtCreator IDE来编译我的代码。
我的一些代码:
std::string plaintext="Some plain text"; DATA_BLOB input; input.pbData = const_cast<BYTE*>( reinterpret_cast<const BYTE*>(plaintext.data())); input.cbData = static_cast<DWORD>(plaintext.length()); DATA_BLOB output; BOOL result = CryptProtectData(&input, NULL, NULL, NULL, NULL, 0, &output);
编辑:忘了提及,我已经包括了windows.h和wincrypt.h库,当然。
这是由于您没有提供CryptProtectData
函数所需的库文件而导致的链接器错误。 您需要将Crypt32
库传递给链接器。
此信息包含在该函数的MSDN文档中。 向下滚动到主题的底部以查看信息。
作为一般规则,为了使用API函数,您需要查看函数文档中的“ 需求”部分。 这列出了以下信息:
你链接到Crypt32.dll
或更确切地说Crypt32.lib
? 将.lib添加到您的依赖关系。 有这样的错误时总是看到文档 。