search
HomeBackend DevelopmentC#.Net TutorialVS2017 completes the construction of static library

VS2017 completes the construction of static library

May 12, 2017 am 10:13 AM
studiovisual

This article mainly introduces the relevant information of writing static libraries in Visual Studio 2017 in detail, which has certain reference value. Interested friends can refer to it

Making wheels is an interesting thing , VS is a powerful tool that is capable of very large-scale projects, but to be honest, it is not so friendly to configure smaller projects (other tutorials on the Internet are not Orz friendly at all). Here I show you the correct approach to building a simple static library. (By the way, teach me a little bit about creating solutions - many people can’t figure out the difference between Project and Solution. In VS, Project is the basic execution unit, and a Solution can contain multiple Projects. ——Our static library will contain several (.lib) Projects and one (.exe) Project for testing. The solution is to choose the win32 Console Application console. ##Select Static Library as the type and remove the Precompiled Header option.

#Add header files and source files. #The same goes for the source file .cpp. It should look like this afterwards:

(Note that it will not work to only add the .h file without the .cpp. Such a The project cannot compile the .lib library, and when you test it, errors such as ""xxx.lib": cannot open file specified" will appear. Don't ask me how I know Orz)

(Another kind The reason why I cannot open file specified is that the location where .lib is generated is wrong. Here, see Solution Explorer->Properties

attribute

page

##-> Output Direction output directory

The default one is in the \Debug directory, who knows how it could be wrong)

Then you can write the code:

//  MathLib.h
#pragma once
int add(int x, int y);
//  MathLib.cpp
#include "MathLib.h"
int add(int x, int y) { return x + y; }

Then you need a Project to test (recall what I said at the beginning, a Solution can have multiple Projects, they are all execution units (I will talk about how to call an execution unit later). This is a concept I created myself. )), add a new project to Solution in Solution Explorer:

Select the console and remove the precompiled header as before. Now we have a project containing two Projects Solution:

Write a test code

//  Test.cpp

#include "stdafx.h"
#include "..\MathLib\MathLib.h"
#include <iostream>

int main()
{
  std::cout << add(1, 2) << std::endl;
  return 0;
}

Now you need to add a

reference to MathLib

for Test. The actual function of this step is , when guiding the IDE to compile with the cl compiler command line, add the correct link options (CSAPP has a very inspiring explanation. After the source file #includes the header file, it only introduces a bunch of unrelocated symbols to the linker. It You need to find these symbols in the library file (for static libraries,

Linux is a .a file and Windows is .lib) to complete the relocation). It is very important to find these libraries. Add Reference in Solution Explorer as shown in the figure

VS very considerately lists the Projects in Solution as options, just select it.

At this time, there is a MathLib project in the Reference of Test. Next step, add the include path for the cl compiler, that is, how to find MathLib.h during the pre-compilation period to complete the introduction of symbols. In the Test Properties property page->C++->General->Additional Include Directaries, the additional include paths are directories included in other (custom) header files in addition to the standard library header file directories. cl should go to these places to find MathLib .h. Select OK to add the MyStaticLibrary\MathLib directory.

Everything is ready at this time, and the F5 build and run result reported this error:

It says that .lib is not a valid win32 application and cannot run. Yes, I didn't want to run it originally, but how does VS know which one of so many Projects in Solution should be run? (Think about the previous execution unit and understand what it means. The compilation result of each Project is considered executable) The first added Project is MathLib, so VS runs its output by default, so it is wrong. Find a way to guide VS to run the output of Test (Test.exe), Solution Explorer->MyStaticLibrary Properties property page:

Set the single startup project to Test, OK.

【Related Recommendations】

1. ASP Free Video Tutorial

2. ASP Tutorial

3. Li Yanhui ASP basic video tutorial

The above is the detailed content of VS2017 completes the construction of static library. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
C# .NET and the Future: Adapting to New TechnologiesC# .NET and the Future: Adapting to New TechnologiesApr 14, 2025 am 12:06 AM

C# and .NET adapt to the needs of emerging technologies through continuous updates and optimizations. 1) C# 9.0 and .NET5 introduce record type and performance optimization. 2) .NETCore enhances cloud native and containerized support. 3) ASP.NETCore integrates with modern web technologies. 4) ML.NET supports machine learning and artificial intelligence. 5) Asynchronous programming and best practices improve performance.

Is C# .NET Right for You? Evaluating its ApplicabilityIs C# .NET Right for You? Evaluating its ApplicabilityApr 13, 2025 am 12:03 AM

C#.NETissuitableforenterprise-levelapplicationswithintheMicrosoftecosystemduetoitsstrongtyping,richlibraries,androbustperformance.However,itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical,wherelanguageslikeRustorGomightbepreferable.

C# Code within .NET: Exploring the Programming ProcessC# Code within .NET: Exploring the Programming ProcessApr 12, 2025 am 12:02 AM

The programming process of C# in .NET includes the following steps: 1) writing C# code, 2) compiling into an intermediate language (IL), and 3) executing by the .NET runtime (CLR). The advantages of C# in .NET are its modern syntax, powerful type system and tight integration with the .NET framework, suitable for various development scenarios from desktop applications to web services.

C# .NET: Exploring Core Concepts and Programming FundamentalsC# .NET: Exploring Core Concepts and Programming FundamentalsApr 10, 2025 am 09:32 AM

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

Testing C# .NET Applications: Unit, Integration, and End-to-End TestingTesting C# .NET Applications: Unit, Integration, and End-to-End TestingApr 09, 2025 am 12:04 AM

Testing strategies for C#.NET applications include unit testing, integration testing, and end-to-end testing. 1. Unit testing ensures that the minimum unit of the code works independently, using the MSTest, NUnit or xUnit framework. 2. Integrated tests verify the functions of multiple units combined, commonly used simulated data and external services. 3. End-to-end testing simulates the user's complete operation process, and Selenium is usually used for automated testing.

Advanced C# .NET Tutorial: Ace Your Next Senior Developer InterviewAdvanced C# .NET Tutorial: Ace Your Next Senior Developer InterviewApr 08, 2025 am 12:06 AM

Interview with C# senior developer requires mastering core knowledge such as asynchronous programming, LINQ, and internal working principles of .NET frameworks. 1. Asynchronous programming simplifies operations through async and await to improve application responsiveness. 2.LINQ operates data in SQL style and pay attention to performance. 3. The CLR of the NET framework manages memory, and garbage collection needs to be used with caution.

C# .NET Interview Questions & Answers: Level Up Your ExpertiseC# .NET Interview Questions & Answers: Level Up Your ExpertiseApr 07, 2025 am 12:01 AM

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.

Building Microservices with C# .NET: A Practical Guide for ArchitectsBuilding Microservices with C# .NET: A Practical Guide for ArchitectsApr 06, 2025 am 12:08 AM

C#.NET is a popular choice for building microservices because of its strong ecosystem and rich support. 1) Create RESTfulAPI using ASP.NETCore to process order creation and query. 2) Use gRPC to achieve efficient communication between microservices, define and implement order services. 3) Simplify deployment and management through Docker containerized microservices.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.