2011-04-21 2 views
1
LIBS = ws2_32.lib winmm.lib advapi32.lib crypt32.lib user32.lib gdi32.lib libeay32.lib ssleay32.lib 

OSCOMPAT = /DWIN32 /D_WIN32_WINNT=0x0400 
VSCOMPAT = /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE 
CFLAGS= -I . -I$C /MT /W3 $(OSCOMPAT) $(VSCOMPAT) -nologo $(EXTRACFLAGS) 

test: $(CCLIENTLIB) test.obj oauth.obj hash.obj oauth_http.obj xmalloc.obj 
    LINK /NOLOGO mtest.obj oauth.obj hash.obj oauth_http.obj xmalloc.obj $(LIBS) 


test.obj:test.c 
oauth.obj: oauth.c 
hash.obj: hash.c 
oauth_http.obj: oauth.h oauth_http.c 
xmalloc.obj: xmalloc.c 

Я получаю следующие ошибкиИспользование libssl с NMake

LINK /NOLOGO test.obj oauth.obj hash.obj oauth_http.obj xmalloc.obj ws2_32.lib winmm.lib advapi32.lib crypt32.lib user32.lib gdi32.lib libeay32.lib ssleay32.lib 
hash.obj : error LNK2019: unresolved external symbol HMAC referenced in function oauth_sign_hmac_sha1_raw 
hash.obj : error LNK2019: unresolved external symbol EVP_sha1 referenced in function oauth_sign_hmac_sha1_raw 
hash.obj : error LNK2019: unresolved external symbol EVP_PKEY_free referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol CRYPTO_free referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol EVP_SignFinal referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol EVP_DigestUpdate referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol EVP_DigestInit referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol EVP_PKEY_size referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol BIO_free referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol PEM_read_bio_PrivateKey referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol BIO_new_mem_buf referenced in function oauth_sign_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol EVP_MD_CTX_cleanup referenced in function oauth_verify_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol EVP_VerifyFinal referenced in function oauth_verify_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol PEM_read_bio_PUBKEY referenced in function oauth_verify_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol X509_free referenced in function oauth_verify_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol X509_get_pubkey referenced in function oauth_verify_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol PEM_read_bio_X509 referenced in function oauth_verify_rsa_sha1 
hash.obj : error LNK2019: unresolved external symbol EVP_DigestFinal referenced in function oauth_body_hash_file 
hash.obj : error LNK2019: unresolved external symbol EVP_MD_size referenced in function oauth_body_hash_file 
hash.obj : error LNK2019: unresolved external symbol EVP_MD_CTX_init referenced in function oauth_body_hash_file 
test.exe : fatal error LNK1120: 20 unresolved externals 

, что это проблема в гриме файле. Как связать libssl с моим приложением?

вы можете скачать код отсюда https://rapidshare.com/files/458792519/test.rar (она включает в себя код из liboauth)

+0

Получаете ли вы какие-либо ошибки компилятора (или только ошибки связи)? Символ PEM_read_bio_PrivateKey, например, кажется немного странным, чтобы отображаться как неразрешенный символ. В версии OpenSSL, которую я использую, она существует только как макрос, определенный для вызова PEM_ASN1_read_bio. Поэтому, похоже, он не должен появляться как неразрешенный символ. Это заставляет меня задаться вопросом, включаете ли вы правильные заголовки. Однако версия, которую я использую, может отличаться от вашей. –

+0

@Mark Я только получаю сообщение об ошибке. –

+1

@Vivek: Я не уверен, в чем проблема. Так же, как проверка работоспособности, вы можете запустить 'dumpbin/exports libeay32.lib' (и ssleay32.lib), чтобы убедиться, что на самом деле у них есть определения функций. –

ответ

1

Чтобы подвести итоги разговора в комментариях на OP, я скачал пример кода и побежал NMAKE против него (makefile.nt). Я получил ошибки компоновщика, но недостающие символы были из Win32 libs. Я добавил user32.lib и gdi32.lib в список LIBS в файле makefile, а затем он был связан с чистым (сборка работала с VS2005, VS2008 и VS2010).

Как указывает OP, он также связан с добавлением двух дополнительных библиотек. Мне непонятно, как это поможет разрешить эти символы из libeay32.lib. Поэтому я подозреваю, что изменение файла make привело к полной перестройке и компиляции всех файлов .obj. Результатом этого стала полная чистая сборка. Так что, возможно (я просто догадываюсь), файлы .obj были скомпилированы некорректно изначально (компилятор, который не работал с компоновщиком, возможно?), И полная перестройка сделала все согласованным.

+0

Он не строился с чистой сборкой без использования этих двух библиотек. –

+0

@Vivek: Это немного загадка для меня, но я рад, что вы ее работали. Эти типы проблем являются наименее интересными для программирования. –

Смежные вопросы