博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VeloView源码编译错误记录——VS manifest
阅读量:5306 次
发布时间:2019-06-14

本文共 2347 字,大约阅读时间需要 7 分钟。

编译环境

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内容如下:

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

 

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

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

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

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

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

xxx.exe源码

#include 
#include
#include
#include
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(0, pos + 1); string exeName = strPath.substr(pos+1,strPath.length()-pos-5); 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 -1; } 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 = 1; i < argc; ++i) { str_cmd += " "; str_cmd += argv[i]; } cout << "str_cmd: " << str_cmd << endl; system(str_cmd.c_str()); return 0;}

 xxx.cfg

../redirect/moc.exe

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

2017-11-24

转载于:https://www.cnblogs.com/hairui2017/p/7891034.html

你可能感兴趣的文章
00-自测1. 打印沙漏
查看>>
UNITY在VS中调试
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
Scala入门(1)Linux下Scala(2.12.1)安装
查看>>
如何改善下面的代码 领导说了很耗资源
查看>>
Quartus II 中常见Warning 原因及解决方法
查看>>
php中的isset和empty的用法区别
查看>>
Android ViewPager 动画效果
查看>>
pip和easy_install使用方式
查看>>
博弈论
查看>>
Redis sentinel & cluster 原理分析
查看>>
我的工作习惯小结
查看>>
把word文档中的所有图片导出
查看>>
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
机器学习/深度学习/其他开发环境搭建记录
查看>>
xml.exist() 实例演示
查看>>
判断是否为空然后赋值
查看>>
zabbix监控日志文件
查看>>