6 Mr_L_Y

尚未进行身份认证

我要认证

我比较懒~

等级
TA的排名 5w+

VS2019 VC++ 静态库的开发与使用

前言这篇文章应该写在这个系列里面的:VS2017的C++开发心得(九)DLL动态链接——多项目开发。但当时没写,只写了动态链接的相关内容,是因为我认为静态链接相比较动态链接会简单得多,所以干脆就略过了。既然有人提问了,那我就简单的开发流程和主要遇到的问题来讲讲静态库的开发。首先总体来看,静态库和动态库的区别在于:1. 静态库只出现在项目的编译生成的链接期,而动态库则是程序运行时加载使用的;2. 静态库只有一个.lib文件,而动态库除了一个.dll文件以外一般还有个对应的.lib文件;

2020-05-09 21:40:19

VS2019 C++的跨平台开发——Cmake项目(二)

这一篇主要补充Windows下WSL(Linux 子系统)和远程Linux服务器的CMake项目编译运行。Widnows下创建WSL1. 右键左下角的Windows图标=》应用和功能=》启用或关闭Windows功能2. 选中“适用于Linux的Windows子系统,确定3. 安装结束后,应该需要重启一次。4. 打开Windows应用商城,没有固定在这里可以在开始菜单搜索...

2020-05-08 20:37:50

VS2019 C++的跨平台开发——Cmake项目(一)

最近正好用到,感觉很好用,所以分享出来。1.创建Cmake项目这里的解决方案和项目的概念和VC++项目的一样,解决方案就是项目的合集,项目是对应每一个静态库,动态库和可执行文件的编译目标。创建完成:我建议一定要把上图红框的两个内容看一遍。CMake相关的知识我都会带过,因为内容太多了就很难写。下面内容看不懂的一定要看这两个文档。2.文件结构讲解首先是文件夹视图,...

2020-03-29 12:16:32

从小米10发布来看编译优化

这篇文章的起因是有人跨界要来锤桌面CPU :看到新闻的第一感觉就是你在侮辱我的智商,第二感觉就是来自Windows程序员的愤怒。准备通过Google搜索了FFT+AGM+PI,最终确认小米用的是这个代码:http://www.kurims.kyoto-u.ac.jp/~ooura/pi_fft.html。下载后大概是这样的:这是win32bin下面的预编译好的exe。 ...

2020-02-15 15:26:30

VS2019 C++的跨平台开发——Linux开发

前言由于前段时间正好买了一个服务器来跑Tensorflow的推理模型,所以借这个机会把Linux的开发也一并补上。先声明我的服务器是Ubuntu16.04,下面文章的内容也是基于Ubuntu16.04的。为什么标题要写Linux呢?原因是我也开发过Raspbian(Debian)和CentOS,这些系统除了安装软件插件命令有些变化以外,开发过程并没有什么不同,应该可以通用。这部分内容我...

2019-11-11 22:08:14

VS2019 OpenCV的Windows工程到安卓的移植

前言本篇是应一个读者的请求,而且这种需求应该还是蛮多的:刚入职或者刚进实验室的新人,接手一套C++算法工程,现在老板让你移植到Android上。全部用Java重写,当然是不现实的。本文将介绍一种尽可能简单的移植方法。本文使用的软件版本如下:VisualStudio 2019 16.3.5 AndroidStudio 3.5 NDK-r16B Android SDK 21 Ope...

2019-10-23 20:17:24

Unity3d 安卓开发问题总结

开发了半年基于Unity的安卓应用,项目也基本快完结了。在开发过程中遇到了很多坑,然而Unity的技术支持几乎都在英文论坛里。直接百度,真的很难解决问题。本篇对这半年的开发经历做一个总结,希望能帮助其他开发者。https://forum.unity.com/这个是Unity的官方论坛,个人认为解决技术问题很好的途径,就是回复不是很稳定,看情况,然后网络访问也不是很稳定。下面就从我在上面的提问...

2019-09-17 22:08:15

欢迎回到现代C++

现在C++的岗位几乎都要求会使用C++11以后的标准,正好微软官方有一章就是讲的“Welcome Back to C++ (Modern C++)”,我这里主要在内存方面介绍下。具体请看看官方文档:https://docs.microsoft.com/en-us/cpp/cpp/welcome-back-to-cpp-modern-cpp?view=vs-2019先来个总纲:Modern ...

2019-09-03 23:13:18

C++ OpenMP和CUDA进行并行计算时的浮点“误差”

前话前些时间考虑了下VS要不要顺便也讲下Linux的开发。最后还是决定算了:1.现在主流开发Linux的团队,比较排斥使用Windows来对Linux进行开发,虽然他们自己也承认VS开发很方便;2.Linux在VS和C++工程上和Android的基本没啥区别,唯一需要注意的要在VS的配置里面加上远程调试目标也就是Linux的IP和用户名之类的,具体参考微软官方文档:https://docs.m...

2019-08-21 00:16:27

VS2019 C++的跨平台开发——Android .so开发

这篇介绍下怎么用VS开发Android使用的.so动态链接库文件。Android环境配置1.先打开VSinstaller​2.选中C++移动开发​3.如果VS没有下载NDK和SDK的,需要在VS里面配置​​我这里用的是Unity下载的NDK,SDK,JDK。路径大概在:Unity\xxxxxxxx\Editor\Data\PlaybackEngines\Andro...

2019-07-03 22:13:52

VS2019 C++的跨平台开发——C# WPF

本篇介绍如何使用C++开发DLL给WPF的C#脚本调用。本文虽然以C#的WPF窗体应用为例子,但不限于此,.net平台都可以使用,包括Unity的C#脚本。项目准备首先VS2019相对于VS2017最明显的变化就是创建新建工程的界面,创建C++ DLL 工程和C# WPF如下图所示:C++项目的配置就参考之前的文章https://blog.csdn.net/luoyu51018...

2019-06-26 22:57:04

VS2019 dumpbin查看DLL的导出函数

之前有人问过ViewDLL这些软件在哪下载。实际上使用VS就可以查看DLL的导出接口。1.先打开VS内部的PowerShell2.打开以后应该如下图所示,首先输入dumpbin查看下用法:3.使用/Exports参数查看DLL的导出函数符号顺便再讲下关于调用约定和函数符号的关系,即_stdcall,_cdecl.还有就是extern"c"对函数名符号的影响...

2019-06-25 23:21:02

VS2017的C++开发心得(十五)导出类与API开发(下)

这一篇才正式进入正题,怎么导出类和开发API?其实导出类很简单,如下://CTest.h#pragma once#include "DLL.h"class API CTest{public: CTest(int* _buf,int _size); ~CTest(); int* Reverse(); static int InstanceCount;private: ...

2019-05-11 23:59:26

VS2017的C++开发心得(十四)导出类与API开发(上)

首先介绍下一个我经历过的一个大坑,工作第一年在csdn提问时被告知,如果你有两个以上的项目要共享一个类,那么就把这些类的cpp文件加入每个项目编译就行了。如果一个解决方案下有两个项目PA,PB,这两个项目都要用到同一个类CC。从之前的文章知道数据类型没问题,但是一旦涉及函数和静态变量,那么就要考虑导出的问题,否则会出现链接错误的提示。刚毕业时这些完全不懂,出现了链接错误的问题。于是我去csdn...

2019-05-11 22:07:58

从编译角度来理解C++中的面向对象

面向对象一直是C++相对于C语言的最大改进,但很多人也说不清具体体现在哪。我上学时也是一眼而过不再细想,直到现在写过很多C语言代码以后才会豁然明白为什么要面向对象编程。首先要回顾前面说过的VS2017的C++开发心得(十)头文件与重复定义符号“重定义符号”的问题。面向对象就和这个很有关系。先看两段代码,在不使用面向对象编程的时候如何避免重定义符号://////////////a.h///...

2019-03-06 00:57:23

STM32 之 HAL 库USART的DMA的使用

上一篇对于UART的使用是非常初级的。一般我也只会用来进行代码测试,不会运用到实际项目当中。因为阻塞式的询问串口数据非常占用CPU的使用率,即便每次询问1ms对于CPU来讲都是很长时间的空闲状态。上一篇讲的bug也只是出现在该情况下。因为对于串口数据的到来时间不确定,所以浪费了很多时间在等待信号。非阻塞式的串口通信主要有IT和DMA。IT是利用MCU的中断的硬件特性,就像是示波器的trig...

2019-01-26 23:16:09

VS2017的C++开发心得(十三)调试——内存溢出和内存泄漏(下)

这篇是调试的最后一篇,也是VS2017的最后一篇。这一篇主要介绍远程调试。以上两篇介绍的情况都是自己开发自己调试, 而作为软件开发者不可能将系统完全开发到没有bug的程度才去发布。大多数都是一边发布,一边更新。所以,在我们发布软件到客户手上后,要能够收集用户的崩溃信息,以及能够帮助开发者解决bug的重要数据。很多软件,包括Windows系统,出现崩溃以后会有个错误汇报窗口,引导你上传错...

2019-01-21 01:20:05

STM32 之 HAL 库串口 USART 丢数据及ORE卡死的解决方案

刚装了VS2019Preview,VS2017系列应该还有最后一章就结束了,找个时间结束掉它。昨晚弄了下STM32的串口通信,发现UART在接收PC串口调试助手发送的数据的时候,会时不时卡死,不能接收新的数据。之前公司有人做这方面的项目的时候也是这个情况,当时发现UART处于ORE(overrunerror)状态,归结为波特率太高,降低波特率算妥协了。结果自己弄Nucleo的开发板也出现这个...

2019-01-16 23:11:43

Irrlicht 1.8.4中加入基于D3D9的系统字体支持

Irrlicht是一个基于C++开源的3D引擎,中文名叫鬼火引擎。成立团队现在基本走光了,只剩下一个德国人Michael还在苦苦坚持。老实讲,不推荐大家去用这款引擎,特别是商用。因为实在太老了,最高支持到D3D9,特别对字体的支持很差,对3D模型的加载支持也很差。但作为C++的3D引擎的学习材料还是可以的。由于Irrlicht自己的字体只能使用图片字体,像这样的:基本不能支持中文,所以...

2018-12-16 17:35:08

VS2017的C++开发心得(十二)调试——内存溢出和内存泄漏(中)

这篇要做一点改变,本来计划是怎么debug内存溢出,但由于内存溢出的方式各种各样,没有固定的debug方式,调试手段随机应变。所以这篇主要从内存分布来理解内存溢出问题,以及内存溢出可能造成的后果。首先看看结构体的内存分布,代码如下:#include <Windows.h>struct SA{ double dArray[2]; int t; SA() { F...

2018-12-16 13:03:21

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。