?? 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 + -