C++多项目静态库调用问题

C++项目的解决方案可能由多个子项目构成,在一个子项目调用其他子项目时,容易出现多种编译问题,先就工作中遇到的问题,作以下记录。

1.生成静态库(lib)

选中当前项目,然后选择 项目 --> 属性(或者选中项目,右键选属性) --> 配置属性 --> 常规 ,之后可以修改“配置类型”为“静态库(.lib)”,如下图:

2.调用静态库

此过程大致可以分为三步:

(1)选择 项目 --> 属性 --> 配置属性 --> C/C++,然后修改“附加包含目录”,将静态库(lib)对应的头文件目录都加进去,可以使用用绝对路径或相对路径,如下图:

(2)选择 项目 --> 属性 --> 配置属性 --> 连接器,然后修改“附加库目录”,将静态库(lib)的目录都加进去,可以使用用绝对路径或相对路径,如下图:

(3)选择 项目 --> 属性 --> 配置属性 --> 连接器 --> 输入,然后修改“附加依赖项”,将静态库(lib)的名称都加进去,如下图:

3.编译项目生成可执行文件

当调用多个静态库进行编译时,可以会出现“库文件连接”等错误,这个时候需要检查多个子项目的“运行时库”是否一致,我就因为遇到了这类错误,在此耽误了大量时间,打开“运行时库”的步骤:项目 --> 属性 --> 配置属性 --> C/C++ --> 代码生成,如下图:

时间: 2024-08-01 14:39:53

C++多项目静态库调用问题的相关文章

静态库调用中“unrecognized selector sent to instance”错误

在开发调用静态库的中,出现 “unrecognized selector sent to instance 0x2b5f90”的错误 -[__NSCFConstantString xmlChar]: unrecognized selector sent to instance 0x2b5f90 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantS

多项目静态库资源

WTL中,可使用以下方式加载文件资源. CResource res;if( !res.Load(type, resource) ){ DWORD dd = GetLastError(); return NULL;} 当resource为资源ID时,会出现错误1813,找不到映像文件中指定的资源类型 其实具体原因是CResource中使用的::FindResource第一个参数hModule错误 解决方案: 1.编辑启动项目的资源文件.rc,将使用的静态项目资源包含,如下 3(序号) TEXTIN

IOS开发----生成静态库(.a)

转自:http://www.cnblogs.com/ios8/p/ios-static-a.html 由于iPhone控件的极度匮乏和自定义组件在重用上的限制,在过去的项目中我们积累了大量的“纯代码”组件——因为IB本身的限制,我们无法把这些组件封装为IB组件库(本来我们想通过分发xib文件的方式重用这些组件,但最终发现这根本不可能,苹果的Plug-in编程不支持iPhone). 最终我们想到了静态库.虽然这仍然还是一种比较原始的复用方式,但起码我们可以隐藏组件的源代码. 下面, 我们使用iPh

IOS 在Xcode 4.x以上添加静态库

参考网站:http://my.oschina.net/edwardlau/blog/95924 常用的代码可以通过静态库进行抽出来作为公共类方法,方便在其他地方调用,一般来说我们要准备2套静态库,一套是模拟器上使用的,一套是真机使用的, 创建静态库: 在Xcode中新建一个Project.选择如下图: 然后点next,下一步至于填写的东西随意. 创建完成后结构如下图: 未生成的静态库在Products下为红色, 然后随便在.h文件中写一个简单的方法sayHello; 代码如下: ? 1 2 3

ios静态库的使用

ios静态库的使用 2014-03-11 22:24 3906人阅读 评论(0) 收藏 举报 ios的静态库文件是*.a,如果需要使用它,我今天学的简单的方法,可通过,简单说说,如果有一个A手机项目,一个B的静态库项目,A想使用B.a,按以下的步骤: 1.在A项目里面拖进B项目.在B的product下面会看见红色的B.a,表示还没有编译通过(在工程设置里添加上你需要导出的.m文件). 2.选择好需要编译的对象,B下的某模拟器或者是B下的真机上进行编译(模拟器上生成的静态库和真机上生成的不能混用)

Linux静态库逐步详解

一 源文件 下载有如下两个源文件: /* bill.c */ #include <stdio.h> void bill(char* arg) { printf("bill: we passed %s\n", arg) ; } /* fred.c */ #include <stdio.h> <pre name="code" class="cpp"> void fred(int arg){ printf("

项目中遇到的问题-2:编译第三方静态库报错、查看静态库的类型、绘制圆形

这一周比较折腾,由于项目应用涉及到和其他产品线APP的互相通信,在高层领导英(yi)明(ta)神(hu)武(tu)的战略指导下,我开始了与其他组同事的联调之旅.这几天鄙司负责产品的上级同事莅临监工,对现在的情况又提出了一些改进,作为一名程序猿,我已经奉上我的双膝... 一.集成公司其他组的.a静态库,报错:duplicate symbole for architectecture i386 XXX  查了一下报错的地方,都是指示.a的库和工程里面某些.m文件冲突,正好同事提到之前有碰到过这种情况

浅谈C++ 动态库与静态库的调用

一.调用静态库文件:两种方式:1 使用VS工具 1).工具>选项>项目和解决方案>VC++目录中设置包含文件和库文件的目录 2)cpp中包含头文件,以及要用的命名空间,然后即可调用相关的东西2.不通过设置目录的方式: 1)cpp中包含头文件 2)cpp中加入#pragma comment(lib,"..\\debug\\testlib.lib")二:调用动态库文件包含头文件#include <Windows.h>[code=cpp]typedef int

malloc,colloc,realloc内存分配,动态库,静态库的生成与调用

 1.在main方法里面直接定义一个非常大的数组的时候,可能会出现栈溢出:错误代码演示: #include<stdio.h> #include<stdlib.h> void main() { int a[1024 * 1024]; int num = 100; system("pause"); } 错误截图: 2.在定义数组的时候要定义数组的长度,否则会出现错误.(特例:在GCC编译器下,不会出现错误(因为标准不一样)). 3.打印并且赋值的是: for (