1. 설치 환경
    Visual Studio 2008, WinXP

2. 설치 준비
    OpenSSL 소스 다운로드 : http://www.openssl.org/source
    ActivePerl 다운로드       : http://www.activestate.com/activeperl
   
    > ActivePerl 설치
    > OpenSSL 소스 압축 해제

3. 시작 > 실행 > cmd
    > OpenSSL 폴더로 이동
    예) cd D:\My Project\OpenSSL\openssl-0.9.8k

4. OpenSSL Configure
    > perl Configure 옵션 VC-WIN32 --prefix=설치디렉토리
    예) perl Configure no-idea no-mdc2 no-rc5 VC-WIN32 --prefix="D:\My Project\OpenSSL"
        상용알고리즘 idea, mdc2, rc5 미설치.

5. Visual C++ 환경변수 로딩
    > C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
   
6. Make 파일 생성
    > ms\do_masm

7. 소스 수정 
    > OpenSSL 폴더 (예: D:\My Project\OpenSSL\openssl-0.9.8k)에 있는 다음 파일을 수정한다.  
        crypto\cversion.c    105 Line
            return "OPENSSLDIR: \"" OPENSSLDIR "\"";
            =>
           
return "OPENSSLDIR: \" OPENSSLDIR \"";

        crypto\cryptlib.h    84-86 Line
            #define X509_CERT_DIR       OPENSSLDIR "/certs"
            #define X509_CERT_FILE      OPENSSLDIR "/cert.pem"
            #define X509_PRIVATE_DIR    OPENSSLDIR "/private"
            =>
            #define X509_CERT_DIR       OPENSSLDIR "\\certs
"
            #define X509_CERT_FILE      OPENSSLDIR "
\\cert.pem
"
            #define X509_PRIVATE_DIR    OPENSSLDIR "
\\private
"

        crypto\opensslconf.h    107-108 Line
            #define ENGINESDIR "D:\My Project\OpenSSL/lib/engines"
            #define OPENSSLDIR "D:\My Project\OpenSSL/ssl"
            =>
            #define ENGINESDIR "D:\\My Project\\OpenSSL\\lib\\engines"
            #define OPENSSLDIR "D:\\My Project\\OpenSSL\\ssl"


        crypto\x509v3\v3_pci.c
        crypto\x509v3\v3_pcia.c

            Visual C++ 2008에서 위 두파일은 연뒤
            파일 > 저장 고급 옵션 > 인코딩 > 유니코드(서명 있는 UTF-8) - 코드 페이지 65001
            로 저장한다

    > D:\My Project\OpenSSL\openssl-0.9.8k 와 같이 소스가 있는 폴더명에 공백이 포함되어 있는경우
       util/copy.pl 파일을 다음과 같이 수정
       
       util/copy.pl 15-26 Line
            foreach $arg (@ARGV) {
                if ($arg eq "-stripcr")
                    {
                    $stripcr = 1;
                    next;
                    }
                $arg =~ s|\\|/|g;    # compensate for bug/feature in cygwin glob...
                foreach (glob $arg)
                    {
                    push @filelist, $_;
                    }
            }
            =>
            foreach $arg (@ARGV) {
                if ($arg eq "-stripcr")
                    {
                    $stripcr = 1;
                    next;
                    }
                $arg =~ s|\\|/|g;    # compensate for bug/feature in cygwin glob...
                if (-d $arg)
                {
                    $arg="\"$arg\"";
                }
                foreach (glob $arg)
                    {
                    push @filelist, $_;
                    }
            }


8. 정적 라이브러리 컴파일 및 설치
    nmake -f ms\nt.mak
    nmake -f ms\nt.mak test
    namke -f ms\nt.mak install

     ※ 동적 라이브러리로 설치하고자 할경우 "namke -f ms\ntdll.mak"로 컴파일 및 설치한다.

2009/05/11 19:45 2009/05/11 19:45
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[MFC] Visual Studio 2008에서 zlib 1.2.3 컴파일

VS2008에서 컴파일 할경우 다음과 같은 오류 메세지가 출력됨.

1>------ 빌드 시작: 프로젝트: zlib, 구성: DLL ASM Debug Win32 ------
1>Assembling...
1> Assembling: D:\My Project\zlib-1.2.3\contrib\masmx86\inffas32.asm
1>D:\My Project\zlib-1.2.3\contrib\masmx86\inffas32.asm(647) : error A2070:invalid instruction operands
1>D:\My Project\zlib-1.2.3\contrib\masmx86\inffas32.asm(649) : error A2070:invalid instruction operands
1>D:\My Project\zlib-1.2.3\contrib\masmx86\inffas32.asm(663) : error A2070:invalid instruction operands
1>D:\My Project\zlib-1.2.3\contrib\masmx86\inffas32.asm(720) : error A2070:invalid instruction operands
1>Project : error PRJ0019: 도구에서 오류 코드를 반환했습니다. 위치: "Assembling..."
1>빌드 로그가 "file://D:\My Project\zlib-1.2.3\projects\visualc6\Win32_DLL_ASM_Debug\BuildLog.htm"에 저장되었습니다.
1>zlib - 오류: 1개, 경고: 0개
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

※ 수정

inffas32.asm파일의 오류 위치를 다음과 같은 형식으로 변경
    원본 : movd mm7,[esi]
    수정 : movd mm7,dword ptr[esi]
2009/04/21 15:47 2009/04/21 15:47
태그 : , , ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

IE8설치후 VS2008 스크립트 오류 문제

Internet Explorer 8 설치후 Visual Studio 2008에서 함수, 변수 추가시 Script 오류가 발생.

임시 해결방법

  1. regedit 실행
  2. "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 
    Settings\Zones" 항목에 "1000"키 생성
  3. "1000"키 항목에 DWORD값 추가
    - 이름 : 1207
    - 값    : 0x000000

참고

2009/03/31 09:53 2009/03/31 09:53
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

<트랙백>

  1. IE 8.0으로 업그라운드를 하고난뒤, RedJini 님께서 메신저로 문의를 한건 해주셨다. vs2005, vs2008 위자드에서 팝업이 안뜬다는.. 회사에서 2003으로 개발하고 있으니 전혀 눈치채지 못할수밖에. 혼자 이래저래 뒤져본 결과 위자드 띄울때 스크립트를 쓴다는것. 스크립트 뒤져보면 그 안에는 ActiveX를 사용한다는것. 앞뒤 정황을 따져보니, IE 8.0으로 업데이트 하면서 ActiveX띄울때 다시 묻곤하는데 이 부분에서 문제가 생기지..