VeloView源码编译错误记录——VS manifest
编译环境
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的更多相关文章
- mysql5.7.10 源码编译安装记录 (centos6.4)【转】
一.准备工作 1.1 卸载系统自带mysql 查看系统是否自带MySQL, 如果有就卸载了, 卸载方式有两种yum, rpm, 这里通过yum卸载 rpm -qa | grep mysql //查看系 ...
- 解决 Ubuntu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target 'all' failed
最近源码编译 opencv,出现下面的错误 [ %] Built target opencv_dnn Makefile:: recipe for target 'all' failed google ...
- Android源码编译全过程记录(基于最新安卓5.1.0)【转】
本文转载自:http://blog.csdn.net/drg1612/article/details/44802533 我的编译条件: 1 Ubuntu Kylin 14.04 长期支持版 下载地址 ...
- Ncut源码编译错误的解决方法
NCut是一个比较老的开源代码了.所以在新的matlab的环境下老出各种bug. 经过自己的各种折腾,总结为一下几点: 1.保证matlab的mex是有C编译器可以用的,具体可以用 mex -setu ...
- Android 源码编译错误
参考文章:http://blog.csdn.net/brightming/article/details/49763515/ Building with Jack: out/target/common ...
- Zabbix 源码编译安装
简介: Zabbix 分布式监控系统,源码编译安装记录 ( 记不得是第多少次了 ) 下载地址:http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX ...
- spark源码编译记录
spark在项目中已经用了一段时间了,趁现在空闲,下个源码编译在IDEA里面阅读下,特此记录过程. 前提已经安装maven和git 1.上官网下载源码的包: 2.然后解压到一个文件夹 3.编译,编译的 ...
- 【转】Android 源码编译make的错误处理--不错
原文网址:http://blog.csdn.net/ithomer/article/details/6977386 Android源码下载:官方下载 或参考android源码下载方式 Android编 ...
- 源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)
最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题, 用 echo phpinfo() ; 查看, 支持op ...
随机推荐
- Java 多态、内部类、异常、包
一.多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态. 例如: 动物中的猫和狗. 猫这个对象对应的是猫类型,例如:猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为 ...
- 机器学习技法:01 Linear Support Vector Machine
Roadmap Course Introduction Large-Margin Separating Hyperplane Standard Large-Margin Problem Support ...
- 记一次vscode升级后,格式化Vue出现的问题
一.VSCode中使用vetur插件格式化vue文件时,stylus代码会自动加上大括号.冒号和分号 本来就是简写比较方便舒服,结果一个格式化回到十年前 解决方案: vscode 文件 ->首 ...
- 从一个简单案例上手Spring MVC,同时分析Spring MVC面试问题
很多公司都会用Spring MVC,而且初级程序员在面试时,一定会被问到这方面的问题,所以这里我们来通过一个简单的案例来分析Spring MVC,事实上,我们在培训中就用这个举例,很多零基础的程序员能 ...
- 【ASP.NET MVC 学习笔记】- 15 Unobtrusive Ajax
本文参考:http://www.cnblogs.com/willick/p/3418517.html 1.Unobtrusive Ajax允许我们通过 MVC 的 Help mothod 来定义 Aj ...
- 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject
本文参考:http://www.cnblogs.com/willick/p/3299077.html 1.在ASP.NET MVC中一个客户端请求是在特定的Controller的Action中处理的. ...
- Android 自定义View实现QQ运动积分抽奖转盘
因为偶尔关注QQ运动, 看到QQ运动的积分抽奖界面比较有意思,所以就尝试用自定义View实现了下,原本想通过开发者选项查看下界面的一些信息,后来发现积分抽奖界面是在WebView中展示的,应该是在H5 ...
- svn的简介
Svn(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了SVN.Subversion项目的初衷是为了替换当年开源社区最为流行的版本控制软件 ...
- MongoDB理解
1. 什么是MongoDB (1)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. (2)MongoDB 是一个 ...
- 使用prettytable美化python的print输出
经常碰到需要将一些数据用表格形式输出来.自己手动写太麻烦. 用prettytable能很好解决这个问题. ...(未完)