📄 subject_29499.htm
字号:
<p>
序号:29499 发表者:Jenny Han 发表日期:2003-02-08 21:28:02
<br>主题:关于api动态库加载的问题,请教各位高手
<br>内容:本人初学VC,向各位高手请教一个有关API动态库使用的问题,恳请各位给予解答,谢谢。<BR>我在VC平台上建立一个空的控制台项目,往项目中加入一个C++源文件,C++源文件的内容是MSDN(Visual Studio 6.0自带)里CryptSignAndEncodeCertificate函数的示例程序:<BR><BR>#include <stdio.h><BR>#include <windows.h><BR>#include "wincrypt.h"<BR>#define CERT_SUBJECT_NAME "Elizabeth Jackson"<BR>#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)<BR>void BytesToStr(DWORD cb, void* pv, LPSTR sz);<BR>void main(void)<BR>{<BR> CERT_RDN_ATTR rgNameAttr[] = {"2.5.4.3",CERT_RDN_PRINTABLE_STRING,dwValueType strlen(CERT_SUBJECT_NAME), (BYTE*)CERT_SUBJECT_NAME}; <BR>……<BR>}<BR>void BytesToStr(DWORD cb, void* pv, LPSTR sz)<BR>{<BR> ……<BR>}<BR><BR>然后把头文件wincrypt.h拷贝到项目目录中,在project/setting/link/project option中添加”Crypt32.lib”,然后把头文件wincrypt.h加入项目工作区,随后运行,出现一系列类似错误:<BR>D:\2.cpp(17) : error C2065: 'CERT_RDN_ATTR' : undeclared identifier<BR>D:\2.cpp(17) : error C2146: syntax error : missing ';' before identifier 'rgNameAttr'<BR>D:\2.cpp(17) : error C2065: 'rgNameAttr' : undeclared identifier<BR>D:\2.cpp(17) : error C2059: syntax error : ']'<BR>D:\2.cpp(17) : error C2143: syntax error : missing ';' before '{'<BR>D:\2.cpp(18) : error C2065: 'CERT_RDN_PRINTABLE_STRING' : undeclared identifier<BR>……<BR>2.exe - 62 error(s), 1 warning(s)<BR><BR>“CERT_RDN_ATTR”、 “rgNameAttr”、“CERT_RDN_PRINTABLE_STRING”等在wincrypt.h中已声明,为什么还出现“undeclared identifier”错误? 随后的“syntax error”也是由“undeclared identifier”类错误引起的。<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-02-08 23:28:53
<br>内容:#include <wincrypt.h> //不应该是#include "wincrypt.h",否则搜索路径不对<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Jenny Han 回复日期:2003-02-09 10:57:21
<br>内容:我是过了,不是#include "wincrypt.h"方面的原因。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:tjhe 回复日期:2003-02-09 12:05:50
<br>内容:#define _WIN32_WINNT 0x0400 //加上此句试试<BR>#include <windows.h><BR>#include "wincrypt.h"<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:freeflying 回复日期:2003-02-19 12:33:56
<br>内容:加上#define _WIN32_WINNT 0x0400后,出现下边的错误<BR>ompiling...<BR>CryptSignAndEncodeCertificate.c<BR>D:\VCProject\C\CryptSignAndEncodeCertificate.c(171) : warning C4047: 'function' : 'unsigned long ' differs in levels of indirection from 'void *'<BR>D:\VCProject\C\CryptSignAndEncodeCertificate.c(171) : warning C4024: 'CryptAcquireContextA' : different types for formal and actual parameter 5<BR>D:\VCProject\C\CryptSignAndEncodeCertificate.c(305) : error C2065: 'new' : undeclared identifier<BR>D:\VCProject\C\CryptSignAndEncodeCertificate.c(305) : warning C4047: '=' : 'char *' differs in levels of indirection from 'int '<BR>D:\VCProject\C\CryptSignAndEncodeCertificate.c(305) : error C2143: syntax error : missing ';' before 'type'<BR>Error executing cl.exe.<BR><BR>CryptSignAndEncodeCertificate.exe - 2 error(s), 3 warning(s)<BR>该怎么处理???<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-02-19 13:42:16
<br>内容:改成CryptSignAndEncodeCertificate.cpp试试<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:freeflying 回复日期:2003-02-20 09:56:28
<br>内容:CryptSignAndEncodeCertificate.cpp<BR>Linking...<BR>CryptSignAndEncodeCertificate.obj : error LNK2001: unresolved external symbol __imp__CryptSignAndEncodeCertificate@36<BR>CryptSignAndEncodeCertificate.obj : error LNK2001: unresolved external symbol __imp__CryptExportPublicKeyInfo@20<BR>CryptSignAndEncodeCertificate.obj : error LNK2001: unresolved external symbol __imp__CryptEncodeObject@20<BR>Debug/CryptSignAndEncodeCertificate.exe : fatal error LNK1120: 3 unresolved externals<BR>Error executing link.exe.<BR><BR>CryptSignAndEncodeCertificate.exe - 4 error(s), 0 warning(s)<BR>??????????????<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -