运行程序exe无法启动,dll找不到
2015-06-10 21:01
323 查看
exe往往要和相关的dll放在一起,a.exe调用b.dll,b.dll调用一系列dll:x,y,z....
要想让a正常运行,必须把所有的生成目录都放在同一个目录
另外公司前辈也教我一种,在程序中加载设置环境变量的方法,来将dll可以被找到:
void ExptOptimization::AddEnvByDllPath()
{
char *path, *ptr;
int i = 0;
ptr = getenv("PATH");
QString strPtr = ptr;
QFileInfo dllFile(m_strEmulatorDllPath);
if(!dllFile.exists())
return;
QString strDllPath = dllFile.dir().path();
strDllPath.replace("/","\\");
if(!strPtr.contains(strDllPath))
{
QString strPath = "PATH=" + strPtr + ";" + strDllPath;
strPath = "PATH=" + strPtr + strPath;
QByteArray byte = strPath.toLocal8Bit();
char* newPath = byte.data();
putenv(newPath);
}
}
另外在属性——框架和引用——添加新引用
导师曾经用最直接的方法,右键工程——添加现有项,将缺少的lib加入后,就没有无法解析的错误了
在工程中,当多个工程的时候,特别要注意设定自己的各个路径要统一一致,简单明了,不要使用绝对路径。。切记
相对路径,相对的是当前执行程序文件所在的文件夹
要想让a正常运行,必须把所有的生成目录都放在同一个目录
另外公司前辈也教我一种,在程序中加载设置环境变量的方法,来将dll可以被找到:
void ExptOptimization::AddEnvByDllPath()
{
char *path, *ptr;
int i = 0;
ptr = getenv("PATH");
QString strPtr = ptr;
QFileInfo dllFile(m_strEmulatorDllPath);
if(!dllFile.exists())
return;
QString strDllPath = dllFile.dir().path();
strDllPath.replace("/","\\");
if(!strPtr.contains(strDllPath))
{
QString strPath = "PATH=" + strPtr + ";" + strDllPath;
strPath = "PATH=" + strPtr + strPath;
QByteArray byte = strPath.toLocal8Bit();
char* newPath = byte.data();
putenv(newPath);
}
}
另外在属性——框架和引用——添加新引用
导师曾经用最直接的方法,右键工程——添加现有项,将缺少的lib加入后,就没有无法解析的错误了
在工程中,当多个工程的时候,特别要注意设定自己的各个路径要统一一致,简单明了,不要使用绝对路径。。切记
相对路径,相对的是当前执行程序文件所在的文件夹
相关文章推荐
- MySQL索引背后的数据结构及算法原理
- QCombobox 设置item的高度 样式表
- 关于linux报bash ‘/bin/sh: Syntax error: “(” unexpected
- Java之美[从菜鸟到高手演变]之JVM内存管理及垃圾回收
- 一些项目——悼念512汶川大地震遇难同胞——老人是真饿了
- 外汇买入价、外汇卖出价、现钞买入价有什么区别?
- 一道c/c++面试题的解题思路
- Codeforces #291 Div 2 简要题解
- Canjs 基础教程之技巧篇
- QComboBox组合框 自定义样式 item的高度
- VC中MessageBox的常见用法
- linux nano 命令
- PKUSC2015总结
- Android 开发使用自定义字体
- 转 深入解析浏览器的幕后工作原理
- Windows7 连接Windows Server服务器时提示:计算机无法连接到远程计算机上的另一个控制台会话。
- java的泛型与类型擦除
- WIN32无边框窗体的缩放、移动与WM_NCHITTEST消息&&UpdateLayeredWindow重要心得
- HDU 4557 【水+list使用】
- 修改Active Directory域控制器计算机名称