catkin_make编译时,往往需要自动链接同一个工作空间的其他包的头文件.否则会出现类似如下的错误: /home/xx/xx_ws/srcA_package/src/db.hpp:13:26: fatal error: B_package/alax.h: No such file or directory #include <B_package/alax.h> ^ 这需要对包进行配置,假设包A_package需要引用B_package的头文件(例如由message,srv,action自动…
  最近在阅读<大规模C++ 程序设计> 在第1部分,作者讨论了内链接和外链接问题(因为大规模的C++程序有繁多的类和单元.因此编译速度是个大问题) 这里记录一下关于内链接和外链接的理解.   C++的编译过程   我们以bcb 和 vs 为例,一个程序文档一般都由 .cpp 文件 和 .h文件构成.但编译时,只有.cpp 参与编译..h文件则会被预编译器复制到引用他的.cpp中. 然后,.cpp文件被编译成.obj文件. 接着,通过链接器,将obj文件链接为exe文件.   链接过程 链接过…
gcc编译时,如果需要链接的库的目录不在标准目录,则需要通过将保护库的目录/aa/bb/cc通过-L/aa/bb/cc 添加到搜索路径中,如: gcc -o xmltest xml_test.cpp -L/home/xxxx/Desktop/xml_test -lmxml -lpthread -static ps:-static是指使用静态链接,这样就不需要将so放到目标运行环境,但是生成的文件会变大.…
gcc -l参数和-L参数 -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,…
写多线程的时候,编译的时候遇到了问题,开始的时候是这样的: 编译器不认识pthread_create和pthread_join这两个函数. 搜了一下原因是没有链接相应的库,下面是我看到一个博友写的: 程序库的链接       试着编译下面这个程序 /* temp.c */    #include         int main(int argc,char **argv)     {           double value;   printf("Value:%f\n",value…
在gcc下用到数学函数,如sqrt.在gcc时要加上 -lm 参数,这样告诉编译器我要用到数学函数了 . 如:gcc a.c -o a -lm 当在用Eclipse编译使用数学函数的C语言程序时,如sqrt,pow,即使已经加入math.h,也会提示类似于undefined reference to `sqrt'这样的错误.搜索得知需要给gcc加上-lm参数.添加参数方法: 右键点击当前 project 选中 properties菜单->C/C++ build -> Settings ->…
今天写代码时用到了另一个lib型的工程,把它添加到dependencies后,在原工程中可以引用lib中的文件了,但是编译时就会报错,提示包不存在,后来在build.gradle中设置runProguard为false,解决了问题,原因不明! apply plugin: 'android-library' android { compileSdkVersion buildToolsVersion '20.0.0' defaultConfig { applicationId "com.google…
在Linux先编译软件基本都是采用configure文件生成makefile,或者,cmake生成makefile文件两种方式.它们生成的makefile文件,一般默认不支持-g调试选项.但我们使用这种方式编译出来的静态库时,如果程序运行中core在静态库中,我们看不到有用的相关信息.所以有必要编译出debug版本.针对configure文件而言: 第一种方法:./configure -h, 我们会看到这样的信息. 我们可以在环境变量中,设置CFLAGS或者CXXFLAGS,这样的话,系统编译时…
ROS的包编译有两种方法(我知道的),一种是用rosmake,这种方法简单:另一种是用catkin_make,这种方法更方便包的管理和开发.这两种方法都是先建立工作空间workspace(类似于vs下的解决方案,用来管理很多的项目),然后建立包package(类似于vs下的项目),最后利用rosmake或者catkin_make进行编译和运行.学会第一种方式,再去学习第二种就很简单了.源码附在每个小节的后面. 1.rosmake编译包package 1.1.创建工作空间 在开始具体工作之前,首先…
今天在测试一个工程的时候,突然遇到了这样一个问题: 错误信息:System.Resources.MissingManifestResourceException: 未能找到任何适合于指定的区域或非特定区域性的资源.请确保在编译时已将"****.****.Resource.resources"正确嵌入或链接到程序集"****",或者确保所有需要的附属程序集都可加载并已进行了完全签名. 在网上搜索了N久都没看到几篇解决的文章,最后在不懈的努力下终于解决了,所以决定写下解…
用eclipse写java代码,自动编译时,如何能够触发一个动作,这个动作是生成本项目的代码,并且编译完成后,自动生成的代码也编译好了, java编辑器中就可以做到对新生成的代码的自动提示? 不生成代码,生成class文件也可以,只要能够让新生成的class,能够在eclipse 的java编辑器中可以上下文提示,并且生成的class能够保存下来(不管是以java文件,jar文件,class文件,任意形式都可以) 多谢 java如何在eclipse编译时自动生成代码 关于java编译时自动生成代…
cocos2d-html5是一个用JS来开发游戏的框架,通过javascript Binding的方式可以将游戏编译到手机上.这对前端开发人员来说非常方便,开发效率也比使用c++开发要快的多. jsb模式下是通过打包spidermonkey来运行JS代码的.由于JS是一个解释型的语言,所以是把js当作assets直接拷贝进去的.带来的问题就是将apk包解压后就可以直接拿到js的源代码. 幸好官方出了一个cocos2d-console的工具,通过该工具可以将js编译为字节码.该工具在官方发布包的t…
原文:请确保在编译时已将"AjaxControlToolkit.Properties.Resources.NET4.resources"正确嵌入或链接到程序集"AjaxControlToolkit" 未能找到任何适合于指定的区域性或非特定区域性的资源.请确保在编译时已将 "AjaxControlToolkit.Properties.Resources.NET4.resources"正确嵌入或链接到程序集"AjaxControlToolk…
一.在4.20版本中运行游戏,在没有进行任何设置的情况下,游戏不会自动捕获鼠标,游戏不会接受输入,需要手动点一下游戏界面才行.如果要跟老版本一样运行游戏自动捕获鼠标,需要进行设置 二.也可以通过代码的方式设置鼠标显示隐藏和输入模式 三.编译时自动保存…
原文:[.Net Core]编译时禁止自动生成netcoreapp文件夹 每次在编译生成文件时,VS都会自动在<OutputPath>属性指定的路劲后再追加一个用NetCore命名的文件夹 可我并不需要这个特性,这只会让我翻文件时更麻烦. 解决方法是编辑工程文件.csproj,添加一个属性 <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> 就不会再自动创建netcor…
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 导语 在日常开发过程中难免会使用到第三方库或者需要将部分库分离另外存储,如果将库与代码放在一起难免会造成工程庞大,此时就可以采用将库与源码分离的方式,在编译时根据情况来判断是否需要下载. 步骤 下面来解析下具体操作步骤,以下以 oracle oci 库下载为例. UNSET命令初始化本次编译用到的参数变量 #初始化oci库压缩包路径参数LOCAL_OCI_LIB_ZIP UNSET(LOCAL_OCI_LIB_ZIP…
在网上搜索了N久都没看到几篇解决的文章,最后在不懈的努力下终于解决了,所以决定写下解决方法方便以后遇到同样问题的朋友: 其实这个错误的主要问题就是没有找到需要的资源文件(该文件为Resources.resx),引用该文件的地方就是System.Resources.ResourceManager manager = new System.Resources.ResourceManager("×××.Resources", typeof(Resources).Assembly);而导致错误…
不知道出于什么目的,.netcore项目默认编译时生成的文件要多加一层"netcoreapp3.0"或"netcoreapp2.1",这应该不符合大多数开发者的习惯吧? 不过微软为我们提供了配置来取消这个目录. 编辑项目文件 <PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendR…
特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始(gcc 参数,指定头文件搜索位置)    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH    ※再找内定目录 /usr/include   /usr/local/include /usr/lib/gcc-lib/i386-li…
学习新事物,方法高于技术本身,如果没有把握"BIG PICTURE"的话很难理解进去.通过以下几点进行理解ROS: ROS实际上不是操作系统,他只是一个通信的框架,一个代码管理的架构.任务的时序规划和CPU资源分配工作都是靠LINUX来实现,所以,ROS脱离不了LINUX,ROS依附在LINUX上. 机器人的核心平台是:多传感器和处理器之间的通信,处理器和执行器之间的通信,这些通信必须保持一个统一的时钟,试想如果从传感器传回来的数据时间上不同步,那就谈不上数据融合了. ROS主要解决了…
怎么快速构建自己的C/C++程序?--有关编译.静态链接和SCons 1. 写在前面 最初写C++是在Visual Studio这个IDE里,那时我并没有makefile的概念,对程序的编译和链接的一些概念也是比较模糊.在VS下,随便增加h/cpp文件,基本上按下编译运行只要不报错就能运行. 后来开始尝试在linux平台写程序时,为避免编写makefile,曾经一度在Ubuntu里使用Code Block这个IDE. 使用IDE也有很多不爽的地方.再后来我就习惯于在Win下用Sublime的文本…
在网上直接下载别人编译好的Qt库,为自己使用省了不少事.但往往也会遇到些问题,其中Qt version is not properly installed,please run make installQt没有被正确安装,请运行make install这个问题是比较常见的一个.网上看了一个帖子,终于明白原因所在,原来是qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径.如果直接拷贝过来使用,自己的路径结构与原来不同,则Qt库就不能正常使用.提示就是Qt version is…
Boost是一个强大的C++第三方库,但是Boost的各种问题实在是很让人蛋疼.我搜到过一篇文章关于LuaBind使用Boost Build管理工具来管理源代码以及编译的博文,其第一句话就是Fuck The Boost!it is the pain of ass! 那个采用Boost Build来编译LuaBind我最后完成了,但是很是蛋疼. 现在又出现了Boost链接的问题,经过多方搜索,以及尝试.个人对Boost 的自动链接机制如下: Boost默认启用自动链接功能,而且是静态链接.它会根据…
今天看了一下wpf的Application类方面的知识,一个windows应用程序由一个Application类的实例表示,该类跟踪在应用程序中打开的所有窗口,决定何时关闭应用程序(属性 ShutdownMode),并且可以执行初始化和清理操作的事件. 说说正题吧~~ 在了解了一些Application类的知识后,我打算自己动手写一个类作为程序的入口,以此来代替WPF项目为我们自己生成的App.xaml.     class Startup : Application     {        …
发现 VC2010 Express  设置了 Project Dependencies 之后并没有自动链接. 而在VC2008中工程依赖不仅影响构建顺序,也会自动链接依赖项. 具体说明见: http://blogs.msdn.com/b/vcblog/archive/2010/02/16/project-settings-changes-with-vs2010.aspx 现在应该使用 References 来设置依赖并自动链接. 但是VC2010Express存在一个错误,BuildAll同时构…
简述 好久没有用过boost库了,以前用也是在linux下,需要哪个部分就添加哪个部分到Makefile中. 最近要在Windows下使用,主要是mongocxx库依赖它,不想自己去编译它了,就直接在https://dl.bintray.com/boostorg/release/1.66.0/binaries/上下载已经编译好的版本. 下载安装后发现一个问题,就是它的lib目录下存在多个不同编译参数编译的版本,在VC中它会自己根据当前环境选择对应的库进行链接(通过#pragma comment(…
原文链接:https://blog.csdn.net/shixing_11/article/details/6976900 最近开发人员通过SVN提交了xxx.java文件,因发布时该包有问题需要回退,故SCM将该xxx.java文件用editplus打开删除了新添的一行,删除后重新编译打包,却报了如下异常: java:[1,0] illegal character: \65279 表面看着该文件确实没错,看不出来问题,后来从SVN上更新下代码以后,发现本地也不报错,后来通过Eclipse查看了…
原文链接:VS编译时自动下载NuGet管理的库 之前一直使用NuGet来管理一些第三方的库,但是每次check in代码时候为了保证编译通过,都需要把对应的packages check in. 比较耗费时间,特别是往github上同步代码,而且这些库在NuGet上都有的,是没有必要check in上去的. 应广大的同胞的要求,NuGet在2.0版本开始支持在编译的时候自动同步对应的packages.不过在2.0-2.6版本,默认是没有勾选自动下载的,2.7之后默认是勾选的. 一.设置自动下载 二…
==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/from/this/mirror -- 下载php镜像tar xvf mirror -- 解压镜像cd php-7.0.9/ -- 进入安装目录sudo apt-get update -- 更新阿里云库 sudo apt-get install libkrb5-dev \ libc-client2007…
Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型,例如:Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student. 说明一下编译时类型和运行时类型: Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定.如果编译时类型和运行时类型不一致,会出现所谓的多…