비쥬얼 스튜디오 링크에러
글쓴이: anaud2 / 작성시간: 월, 2008/05/26 - 8:55오후
안녕하세요
현재 openssl의 함수를 손쉽게 헤더파일과 라이브러리를 가지고 리눅스 상에서 암호화 통신 함수를 만들엇습니다.
리눅스상에서는 제가 만든 함수들을 정적 라이브러리로 만들었구요
그걸 다시 윈도우 상에서 DLL로 만들라는 ! 지시가 있어서 급하게 윈도에 openssl 을 깔고 만들었습니다.
똑같이 비쥬얼스튜디오6.0에서 DLL만드는 형식에 맞게 만들고 링크 단에서 project / settting /link 에서 ssleay32.lib, libeay32.lib 를 추가해주고
Tool / options 에서"ssleay32.lib, libeay32.lib"파일이 있는 링크위치도 추가해줬습니다.
그래서 DLL만드는것은 성공하여 이것을 사용하는 프로그램을 만들어줬는데
정상적으로 컴파일 링크가 되지만 최초 openssl에서 제공해주는 함수를 사용하기만 하면! 에러가 발생합니다.
에러 메세지는 "OPENSSL_Uplink(100F2010,05): no OPENSSL_Applink " 라는 에러가 납니다.
아는 선배의 말로는 디버깅 결과 openssl에서 제공하는 함수를 실행하는 과정에서 이 파일에 대해 라이브러리를 못불러와서 생기는거 갔다.
란 말을 하는데요
lib 로 링크 잡아주면 컴파일단계에서 즉 제가 만드는 DLL 파일 단계에서 이미 필요한 라이브러리를 가져다 쓰는거 아닌가요?
흠! 도저히 이해가 안되네요
도와주세요 ㅠ
Forums:
답이 아닐수도
답이 아닐수도 있습니다. 그냥.. 옛날 경험에서 말씀드리는데요.
openssl.dll(혹은 관련 dll)를 실행파일과 같은 디렉토리에 넣고 실행해 보세요.
그리고, dll에 있는 함수는 컴파일 단계에서 실행파일에 포함되지 않을껍니다.
말그대로, 다이나믹하게 링크되기 위해 쓰이는 거라서요..
답변 감사합니다.
윗분이 말씀하신대로 debug와 c파일이 있는곳 모두 복사해서 넣어봤지만...
아직도 연결이 안되고 프로그램이 실행이 안되네요 ㅠ
열심히 하겠습니다.ㅠ
applink.c라는 파일을
applink.c라는 파일을 찾아서 <설치경로>/include/openssl/applink.c
프로젝트에 이 파일을 추가해줍니다.
또는, 단순,...무식 하게, #include 하는 방법도 있겠습니다.
* 아시다시피 해보지는 않았습니다. 해보시고 답글올리시면, 다른분들에게도 도움이 되겠군요.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
감사합니다.
#INCLUDE 로 하진 않았습니다.(하면 링크에서 에러가 되네요)
같이 프로젝트에 추가한이후에 컴파일결과 전에 에러표시는 안나지만
비슷한 구간에선 여전히 죽어버리네요 ㅠㅠ
에러는 debug Assertion Failed!
Program : C:\C\client\debug\client.exe
file : dbghep.c
line : 1011
Expression : +CrtlsValidHeapPointer(pUserData)
For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts
(Press Retry to debug the application)
이라고 나오네요
아무리 봐도 openssl 에서 제공하는 dll이 제기능을 못하는거 같단생각만 드네요 ㅠ
댓글 달기