이 글은 주로 Visual Studio 2017의 정적 라이브러리 작성 관련 정보를 자세히 소개하고 있습니다. 관심 있는 친구들이 참고할 수 있습니다.
바퀴 만들기는 흥미로운 일입니다. 매우 대규모 프로젝트를 수행할 수 있는 강력한 도구이지만 솔직히 말해서 소규모 프로젝트를 구성하는 데는 그다지 친숙하지 않습니다(인터넷의 다른 튜토리얼은 전혀 Orz 친화적이지 않습니다). 여기서는 간단한 정적 라이브러리를 구축하는 올바른 접근 방식을 보여 드리겠습니다. (그런데
솔루션 만들기에 대해 조금 가르쳐 드리겠습니다. 많은 사람들이 프로젝트와 솔루션의 차이점을 구분하지 못합니다. VS에서는 프로젝트가 기본 실행 단위이고 솔루션은 여러 프로젝트 포함 ——우리의 정적 라이브러리에는 테스트용으로 여러 개의(.lib) 프로젝트와 하나의(.exe) 프로젝트가 포함됩니다. 솔루션은
헤더 파일과 소스 파일을 추가하세요. >이후 소스 파일 .cpp도 마찬가지입니다.
(참고로 .cpp 없이 .h 파일만 추가하면 작동하지 않습니다. 이러한 프로젝트는 .lib 라이브러리를 컴파일할 수 없으며 테스트할 때 다음과 같은 오류가 발생합니다. ""xxx.lib": 지정된 파일을 열 수 없습니다."가 나타납니다. Orz를 어떻게 아는지 묻지 마세요.
(또 다른 지정된 파일을 열 수 없는 이유는 .lib 생성 위치가 잘못되었기 때문입니다. . 여기에서 솔루션 탐색기->속성
속성페이지
기본값은 디버그 디렉터리에 있으며 어떻게 잘못될 수 있는지 알 수 있습니다.)
그런 다음 코드를 작성할 수 있습니다.// MathLib.h #pragma once int add(int x, int y); // MathLib.cpp #include "MathLib.h" int add(int x, int y) { return x + y; }그런 다음 테스트할 프로젝트가 필요합니다( 처음에 제가 말한 것을 기억해 보세요. 솔루션은 여러 프로젝트를 가질 수 있으며 모두 실행 단위입니다(실행 단위를 호출하는 방법은 나중에 설명하겠습니다. 이것은 제가 직접 만든 개념입니다). 솔루션 탐색기: 이제 이전과 같이 콘솔을 선택하고 미리 컴파일된 헤더를 제거합니다. 이제 두 개의 프로젝트가 포함된 솔루션이 있습니다.
테스트 코드 작성
// Test.cpp #include "stdafx.h" #include "..\MathLib\MathLib.h" #include <iostream> int main() { std::cout << add(1, 2) << std::endl; return 0; }이제 테스트에 MathLib의
참조
를 추가해야 합니다. 이 단계의 실제 기능은 IDE가 cl로 컴파일하도록 안내하는 것입니다. 컴파일러 명령줄에 올바른 링크 옵션을 추가합니다(CSAPP에는 매우 고무적인 설명이 있습니다. 소스 파일에 헤더 파일이 포함된 후에는 재배치되지 않은 여러 기호만 링커에 도입됩니다. 라이브러리 파일(정적 라이브러리의 경우Linux는 .a 파일이고 Windows는 .lib임)을 사용하여 재배치를 완료합니다. 그림과 같이 솔루션 탐색기에 참조 추가
VS는 솔루션의 프로젝트를 대안으로 매우 신중하게 나열하므로 선택하기만 하면 됩니다.
이때 Test의 Reference에 MathLib 프로젝트가 있습니다.
다음 단계에서는 cl 컴파일러에 대한 포함 경로, 즉 사전 컴파일 기간 동안 MathLib.h를 찾아 기호 도입을 완료하는 방법을 추가합니다. 테스트 속성 속성 페이지->C++->일반->추가 포함 디렉터리에서 추가 포함 경로는 표준 라이브러리 헤더 파일 디렉터리 외에 다른 (사용자 지정) 헤더 파일에 포함된 디렉터리입니다. MathLib .h를 찾으려면 확인을 선택하여 MyStaticLibraryMathLib 디렉터리를 추가합니다. 이제 모든 것이 준비되었지만 F5 빌드 및 실행 결과에서 다음 오류가 보고되었습니다..lib는 유효한 win32 애플리케이션이 아니어서 실행할 수 없다고 나옵니다. 예, 원래는 실행하고 싶지 않았지만 VS는 솔루션의 수많은 프로젝트 중 어떤 프로젝트를 실행해야 하는지 어떻게 알 수 있습니까? (이전 실행 단위를 생각해보고 무슨 의미인지 이해하세요. 각 프로젝트의 컴파일 결과는 실행 가능한 것으로 간주됩니다.) 처음 추가된 프로젝트는 MathLib이므로 VS가 기본적으로 출력을 실행하므로 잘못된 것입니다. 테스트(Test.exe), 솔루션 탐색기->MyStaticLibrary 속성 속성 페이지의 출력을 실행하도록 VS를 안내하는 방법 찾기:
단일 시작 프로젝트를 테스트로 설정 , 좋아요.
【관련 추천】
위 내용은 VS2017은 정적 라이브러리 구축을 완료합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!