编译环境

Win7

Visual Studio 2008

Win32

VeloView依赖关系

1)底层

Python

Qt

pcap

boost

eigen

2)中层

liblas: boost

PythonQt: Python, Qt

paraview: PythonQt, Python, Qt

3)顶层

veloview: all

Qt的编译

Qt源码:qt-everywhere-opensource-src-4.8.6.tar.gz

Qt工程目录:%PRJ_ROOT%\qt

Qt输出目录:%PRJ_ROOT%\qt\src\qt\bin

Qt安装目录:%PRJ_ROOT%\install\bin

Qt的编译和安装过程很顺利, 但是在编译后续项目PythonQt等时出现错误,检查发现 %PRJ_ROOT%\install\bin下的moc.exe、uic.exe和rcc.exe三个关键程序不能正常运行,出现如下错误:

但是检查%PRJ_ROOT%\qt\src\qt\bin目录下的相应程序后则可正常运行,只是每个程序多了一个manifest文件。

moc.exe.manifest内容如下:

 <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>

于是把相应的manifest文件复制到%PRJ_ROOT%\install\bin目录下,但是仍然不能正常运行。

经测试,当moc.exe和moc.exe.manifest所在目录下没有子目录时可以正常运行,如果有子目录则不一定。

现在确定和程序的依赖项定位有关,查了manifest文件的简单介绍,但是仍然没有搞明白。

最后贴上一个只能算是规避问题的解决方法

程序重定向(类似于程序的快捷方式)

xxx.exe源码

#include <Windows.h>
#include<iostream>
#include<fstream>
#include<string>
using namespace std; int main(int argc, char** argv)
{
// 获取程序的当前路径
char exeFullPath[MAX_PATH];
string strPath = "";
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
strPath=(string)exeFullPath; int pos = strPath.find_last_of('\\', strPath.length());
string exeDir = strPath.substr(, pos + );
string exeName = strPath.substr(pos+,strPath.length()-pos-);
string xxx_redirect_cfg = exeDir + exeName + ".cfg";
//读取xxx.cfg 得到xxx.exe实际位置
ifstream fin;
fin.open(xxx_redirect_cfg.c_str());
if(! fin.is_open())
{
cout << "can not open " << xxx_redirect_cfg << endl;
return -;
}
string xxx_real_path = exeDir;
string relative_path;
fin >> relative_path;
xxx_real_path += relative_path;
cout << "redirect to "<< xxx_real_path << endl;
// 参数传递
string str_cmd = xxx_real_path;
for(int i = ; i < argc; ++i)
{
str_cmd += " ";
str_cmd += argv[i];
} cout << "str_cmd: " << str_cmd << endl;
system(str_cmd.c_str());
return ;
}

xxx.cfg

../redirect/moc.exe

只要把生成的程序xxx.exe重命名为对应的程序名,如moc.exe。然后在moc.cfg里指定moc.exe实际所在位置,就可以了。

2017-11-24

VeloView源码编译错误记录——VS manifest的更多相关文章

  1. mysql5.7.10 源码编译安装记录 (centos6.4)【转】

    一.准备工作 1.1 卸载系统自带mysql 查看系统是否自带MySQL, 如果有就卸载了, 卸载方式有两种yum, rpm, 这里通过yum卸载 rpm -qa | grep mysql //查看系 ...

  2. 解决 Ubuntu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target 'all' failed

    最近源码编译 opencv,出现下面的错误 [ %] Built target opencv_dnn Makefile:: recipe for target 'all' failed google ...

  3. Android源码编译全过程记录(基于最新安卓5.1.0)【转】

    本文转载自:http://blog.csdn.net/drg1612/article/details/44802533 我的编译条件: 1 Ubuntu Kylin 14.04 长期支持版 下载地址 ...

  4. Ncut源码编译错误的解决方法

    NCut是一个比较老的开源代码了.所以在新的matlab的环境下老出各种bug. 经过自己的各种折腾,总结为一下几点: 1.保证matlab的mex是有C编译器可以用的,具体可以用 mex -setu ...

  5. Android 源码编译错误

    参考文章:http://blog.csdn.net/brightming/article/details/49763515/ Building with Jack: out/target/common ...

  6. Zabbix 源码编译安装

    简介: Zabbix 分布式监控系统,源码编译安装记录 ( 记不得是第多少次了 ) 下载地址:http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX ...

  7. spark源码编译记录

    spark在项目中已经用了一段时间了,趁现在空闲,下个源码编译在IDEA里面阅读下,特此记录过程. 前提已经安装maven和git 1.上官网下载源码的包: 2.然后解压到一个文件夹 3.编译,编译的 ...

  8. 【转】Android 源码编译make的错误处理--不错

    原文网址:http://blog.csdn.net/ithomer/article/details/6977386 Android源码下载:官方下载 或参考android源码下载方式 Android编 ...

  9. 源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)

    最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持op ...

随机推荐

  1. 从零开始搭建框架SSM+Redis+Mysql(一)之摘要

    从零开始搭建框架SSM+Redis+Mysql(一)之摘要 本文章为本人实际的操作后的回忆笔记,如果有步骤错漏,希望来信307793969@qq.com或者评论指出. 本文章只体现过程,仅体现操作流程 ...

  2. C语言第一次实验报告

    一.实验题目,设计思路,实现方法 7-7 计算火车运行时间(15 分) 4-5 求简单交错序列前N项和(15 分) 4-2-7 装睡(10 分) 思路:7-7须将时间统一单位,化为以分钟计算再将两者相 ...

  3. 三、Spring的面向切面

    Spring的面向切面 在应用开发中,有很多类似日志.安全和事务管理的功能.这些功能都有一个共同点,那就是很多个对象都需要这些功能.复用这些通用的功能的最简单的方法就是继承或者委托.但是当应用规模达到 ...

  4. 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结

    前几天,个人著作<Unity3D/2D游戏开发从0到1(第二版)>经过七八个月的技术准备以及近3个月的日夜编写,在十一长假后终于完稿.今天抽出一点时间来,给广大热心小伙伴们汇报一下书籍概况 ...

  5. Table 控件各元素及属性

    功能:在Web页中创建通用表格里. 属性: 1.CellPadding属性:用于设置表中单元格的边框和内容之间的距离(以像素为单位).默认为-(未设置). 2.CellSpacing属性:用于设置表中 ...

  6. 在WebBrowser控件使用js调用C#方法

    有时我们需要在WebBrowser控件中嵌入了网页,然后通过html页面调用后台方法,如何实现呢?其实很简单,主要有三步: 在被调用方法所属的类上加上[ComVisible(true)]标签,意思就是 ...

  7. C++向量(08)

    在数组生存期内,数组的大小是不会改变的.向量是一维数组的类版本,它与数组相似,其中的元素项总是连续存储的,但它和数组不同的是:向量中存储元素的多少可以在运行中根据需要动态地增长或缩小.向量是类模板,具 ...

  8. Memcached查找命令

    Memcached各个查找命令的语法格式都类似,且有相同的参数和参数含义,先将可能出现的各个参数的意义说明如下 key:键值 key-value 结构中的 key,用于查找缓存值. noreply(可 ...

  9. LeetCode Questions List (LeetCode 问题列表)- Java Solutions

    因为在开始写这个博客之前,已经刷了100题了,所以现在还是有很多题目没有加进来,为了方便查找哪些没加进来,先列一个表可以比较清楚的查看,也方便给大家查找.如果有哪些题目的链接有错误,请大家留言和谅解, ...

  10. Java 设计模式原则

    1.    找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起. 换句话说,如果每次新的需求一来,都会使某方面的代码发生变化,那么你就可以确定,这部分的代码需要抽出来,和其 ...