提问人:user3204810 提问时间:1/18/2014 更新时间:1/18/2014 访问量:176
程序启动时出错
Error at program launch
问:
当我尝试从 Release 文件夹启动程序时,操作系统会打开一个错误窗口,并显示以下消息:
在动态链接库 libstc++ 中找不到过程的入口点_gxx_personality_v0.dll
这是源代码:
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <string>
#include "tinyxml.h"
using namespace std;
void write_app_settings_doc( )
{
TiXmlDocument doc;
TiXmlElement* msg;
TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "", "" );
doc.LinkEndChild( decl );
TiXmlElement * root = new TiXmlElement( "MyApp" );
doc.LinkEndChild( root );
TiXmlComment * comment = new TiXmlComment();
comment->SetValue(" Settings for MyApp " );
root->LinkEndChild( comment );
TiXmlElement * msgs = new TiXmlElement( "Messages" );
root->LinkEndChild( msgs );
TiXmlElement * deep = new TiXmlElement( "vector" );
msgs->LinkEndChild( deep );
string array[4] = { "Bayer Leverkusen", "Sporting Lisboa", "Villareal", "Montpellier" };
for(int i=0; i<4; i++) {
TiXmlElement * items = new TiXmlElement( "item" );
deep->LinkEndChild( items );
const char* text = array[i].c_str();
items->SetAttribute("id", i);
items->LinkEndChild( new TiXmlText( text ));
}
msg = new TiXmlElement( "Welcome" );
msg->LinkEndChild( new TiXmlText( "Welcome to MyApp" ));
msgs->LinkEndChild( msg );
msg = new TiXmlElement( "Farewell" );
msg->LinkEndChild( new TiXmlText( "Thank you for using MyApp" ));
msgs->LinkEndChild( msg );
TiXmlElement * windows = new TiXmlElement( "Windows" );
root->LinkEndChild( windows );
TiXmlElement * window;
window = new TiXmlElement( "Window" );
windows->LinkEndChild( window );
window->SetAttribute("name", "MainFrame");
window->SetAttribute("x", 5);
window->SetAttribute("y", 15);
window->SetAttribute("w", 400);
window->SetAttribute("h", 250);
TiXmlElement * cxn = new TiXmlElement( "Connection" );
root->LinkEndChild( cxn );
cxn->SetAttribute("ip", "192.168.0.1");
cxn->SetDoubleAttribute("timeout", 123.456); // floating point attrib
doc.SaveFile("appsettings.xml");
}
void Load() {
TiXmlDocument *doc = new TiXmlDocument("appsettings.xml");
doc->LoadFile();
TiXmlElement* root = doc->FirstChildElement("MyApp");
if (root) {
TiXmlElement* msgs = root->FirstChildElement("Messages");
TiXmlElement* input = msgs->FirstChildElement("vector");
TiXmlNode* child;
//for (child = input->FirstChild(); child; child = child->NextSibling()) {
while (child = input->IterateChildren(child)) {
TiXmlElement* item_element = child->ToElement();
cout << item_element->GetText() << "\n";
}
}
}
int main() {
write_app_settings_doc();
Load();
system("PAUSE");
return 0;
}
代码精简版 5.4 明新 4.8.1 视窗 7
答:
0赞
prajmus
1/18/2014
#1
您的文件可能不匹配libstdc++6.dll
P.S. 您可以使用不混合标题(有关差异的更多信息,请参阅此处)#include <cstdio>
评论
0赞
user3204810
1/18/2014
不,我正在使用 gnu g++ 作为版本
0赞
prajmus
1/18/2014
@user3204810 您可以尝试将 复制到带有二进制文件的目录中,看看它是否有效libstdc++.dll
0赞
user3204810
1/18/2014
我试图在Release文件夹中添加libstdc++-6.dll,但是程序在开始时崩溃
0赞
prajmus
1/18/2014
您可能在某处有另一个 .dll 库导致不匹配问题。你只安装过一次MinGW吗?
0赞
user3204810
1/18/2014
不,我有两个 MinGW 安装
0赞
Eran
1/18/2014
#2
如果您从 codelite 中运行它,请确保首先在路径中设置 mingw 4.8.1 bin 目录:
从 codelite 的主菜单: 设置 ->环境变量
添加此行
PATH=/path/to/mingw481/bin;$PATH
在 codelite 之外运行它时,只需将正确的 dll 复制到可执行文件旁边即可
埃兰
0赞
user3204810
1/18/2014
#3
已解决:问题出在 Windows 环境变量中:在“系统属性”->“环境变量”(在我的情况下是 Windows 7)中,两个 %PATH% 变量(您的帐户和系统范围变量 %PATH% 的变量)都没有 MinGW 路径(在我的情况下为 C:\MinGW\bin)。 这不是一个tinyxml问题:要正常工作,只需将tinyxml .cpp文件添加到工作区,并在预处理器中包含tinyxml.h。
评论