通过宏定义将__declspec(dllexport)与__declspec(dllimport)的转化,实现库代码和使用代码使用同一份头文件
摘要:我们知道,在VC编程中,如果要编译成动态链接库,需要将函数、变量、类等导出,这时使用__declspec(dllexport)。使用动态链接库时,需要在声明的时候有使用__declspec(dllimport)导入外部符号。这样,在库的编写时需要使用一份带__declspec(dllexport)的
阅读全文
posted @
2018-01-24 21:19
J.M.Liu
阅读(723)
推荐(0)
VS2010中VC++目录和C/C++之间的区别。VC++ Directories和C/C++的区别。
摘要:首先,这是个历史遗留问题,说起来比较复杂。其次,这个问题在微软的MSDN博客上已经专门被说起过了,英文好的请直接移步到原文:《VC++ Directories》。另外,stack overflow上面也有人问到过,但是首选回答的人回答是错的,因为他没看 《VC++ Directories》,主要看后
阅读全文
posted @
2017-12-02 16:24
J.M.Liu
阅读(6226)
推荐(2)
VS中为什么不同的项目类型属性查看和设置的界面不一样
摘要:在VS中,存在ATL、MFC、Win32、CLR、常规等等各种工程模板,这些工程模板对应于开发不同类型的应用,比如要开发com,你应该选ATL;开发最原始的通过API代用操作系统的应用,应该用Win32;开发MFC图形界面程序,应该用MFC等等,详细的可以去查资料,比如参考:ATL CLR MFC
阅读全文
posted @
2017-12-02 14:17
J.M.Liu
阅读(4200)
推荐(2)
C++函数中返回引用和返回值的区别
摘要:一、主要讨论下面两个函数的区别: 上面两个函数,第一个返回值是int的引用int&,第二个返回值是int,二者的区别是什么呢? 我们先用一个语句 const int& a = mymay.at(); 来分别调用一次上面两个函数,然后看汇编语言的结果。 反汇编结果: 所以结论就是: 1、返回值为引用型
阅读全文
posted @
2017-11-30 13:01
J.M.Liu
阅读(46734)
推荐(16)
坑爹的vector iterators incompatible错误(VS中属性页-->C/C++-->代码生成-->>运行库)
摘要:之前一直被这个错误折磨着,就是不知道问题在那,后来找了很多资料,大概都是说这是因为多个线程同时操作vector的问题(参考这里)。可是我这里的代码并没有问题,因为同样的代码在别的解决方案中已经成功运行了,所以,很自然的怀疑是环境配置的问题。于是一个一个环境对比着找,才发现有这么个地方(VS中属性页-
阅读全文
posted @
2017-01-01 23:00
J.M.Liu
阅读(492)
推荐(0)
VS2010中属性页中,C/C++ -->预处理器定义
摘要:如上图中,在这里,WIN32、_DEBUGE、_UNICODE等其实是一些宏定义,在这里写上这些,相当于在本工程所有的文件中都写上了: 这样,就可以达到一个多一个同一个代码在不同的配置环境在编译的结果文件不一样,从而实现跨平台。比如,在VC中,因为要有的环境是UNICODE,有些则不是,同一份代码为
阅读全文
posted @
2017-01-01 20:13
J.M.Liu
阅读(1641)
推荐(0)
模块计算机类型“X64”与目标计算机类型“x86”冲突
摘要:问题描述:在X64 平台上开发dll 文件,在生成dll时Vs 2010 出现如下错误 :“fatal error LNK1112: 模块计算机类型“X64”与目标计算机类型“x86”冲突”;解决方法: 有两处需要设置:1、右击该项目,选择属性,在最上面点击 “配置管理器”,新建平台 “x64”,然
阅读全文
posted @
2016-12-29 13:36
J.M.Liu
阅读(2720)
推荐(0)
LIB文件和DLL文件的作用
摘要:(1)lib是编译时需要的,dll是运行时需要的。如果要完成源代码的编译,有lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。(2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如
阅读全文
posted @
2016-12-28 20:03
J.M.Liu
阅读(1166)
推荐(0)
为什么在头文件中只能放声明不能放定义
摘要:虽然#ifndef可以防止头文件在同一个.cpp文件中重复编译,但是当两个.cpp文件包含同一个头文件时,那么这个头文件就在两个.cpp文件中都会被编译,这样就发生重定义了。而声明却可以重复声明,只要不是在同一个.cpp文件中重复声明就可以。
阅读全文
posted @
2015-09-14 22:20
J.M.Liu
阅读(590)
推荐(0)