⑴ Ubuntu中QtCreator調試錯誤:The GDB Process Terminated
昨天把QGIS編譯好了,由於已是近11點,所以就睡覺去了。
今天上午起來嘗試了下基於QtCreator的QGIS二次開發程序的Debug版,編譯沒問題,但調試運行時出錯了,彈出了一個錯誤對話框「The GDB Process Terminated」!
網路了下,找到一個同樣問題的帖子:
按照它的步驟解決問題時,發現我系統里就沒有「environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi」這個文件!
然後,又找了N多帖子,都是只言片語,各種不同的解決方案,對於我來說都是無效的!
於是,我就自行研究起來,看了下QtCreator中的設置,發現我的gdb設置的就是/usr/bin/gdb,路徑沒錯,gdb也存在,但就是運行錯誤!
琢磨了一會,突然想到了什麼!沒錯,我運行QtCreator時並不是以管理員許可權運行的,所以沒法運行系統目錄下的gdb,當然運行不起來!
於是,sudo QtCreator,起來後,載入工程,點擊調試按鈕!
錯誤消失了,可以設置斷點,並調試了!
所以,遇到問題,不要著急,可以先網路查找下,因為我們遇到的問題,別人很有可能已經解決過了,沒必要花時間去研究的,如果沒有解決方案,那就自己研究,方法總比苦難多,多多嘗試,定能解決問題,解決之後你就是第一人了!
一起加油,一起成為優秀的GIS程序員!
⑵ 載入自定義的QGIS插件時,出現異常:qt_metacast(const char *_clname)的_clname是錯誤指針。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MUNMAX 5
struct studentInfo{ //結構類型定義
int num;
float basic;
float spe;
float choose;
float peop;
float lib;
};
struct stuType{
studentInfo stu[MUNMAX];
int num;
};
void DisplayMenu();
int choiceItem();
int f(int);
void putone(struct stuType* as,int num);
void sum(struct stuType *p);
void Init(struct stuType*);
void PrintInfo(struct stuType);
void Print_aInfo(struct stuType,int);
void Input_aInfo(struct studentInfo*);
void Input_allInfo(struct stuType*,int num);
int Search(struct stuType);
void modify(struct stuType*);
void main()
{
struct stuType student;
int choice,index,a;
system(\"color 4e\");
Init(&student);
do{
choice=choiceItem();
switch (choice){
case 0:printf(\"\\n再見!\");break;
case 1:Input_allInfo(&student,MUNMAX);break;
case 2:putone(&student,f(a)); break;
case 3rintInfo(student);break;
case 4:modify(&student);break;
case 5:if ((index=Search(student))!=-1)
Print_aInfo(student,index);
else printf(\"\\n不存在這個學生.\");
break;
case 6:Init(&student);break;
case 7:sum(&student);break;
}
}while(choice);
}
void DisplayMenu() //顯示菜單
{
COORD coordScreen = ;
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon, coordScreen);
printf(\"========= MENU =========\\n\");
printf(\"\\n (1) 通過鍵盤輸入全部學生的學分;\");
printf(\"\\n (2) 通過鍵盤修改某位學生的學分;\");
printf(\"\\n (3) 顯示該班所有學生學分完成情況;\");
printf(\"\\n (4) 全部課程的學分高低進行排序;\");
printf(\"\\n (5) 給定學號,顯示該學生學分完成情況;\");
printf(\"\\n (6) 初始化程序;\");
printf(\"\\n (7) 一些統計信息;\");
printf(\"\\n (0) 退出系統;\");
printf(\"\\nchoice,please:\");
}
int choiceItem() //菜單選擇
{
int choice;
do{
DisplayMenu();
scanf(\"%d\",&choice);
}while(choice<0||choice>7);
return choice;
}
int f(int a)
{
do
{
printf("請輸入要修改學生的學號(1-5):");
scanf("%d",&a);
}while(a-1<0||a-1>4);
return a-1;
}
void Init(struct stuType* s) //初始化
{
s->num=0;
}
void Print_aInfo(struct stuType s,int index) //輸出一個學生的信息
{
printf("\n學號:%d\n基礎課學分:%-6.1f\n專業課學分:%-6.1f\n選修課學分:%-6.1f\n人文類課程學分:%-6.1f\n實驗性課程學分:%-6.1f\n ",s.stu[index].num,s.stu[index].basic,s.stu[index].spe,s.stu[index].choose,s.stu[index].peop,s.stu[index].lib);
}
void PrintInfo(struct stuType s) //輸出所有學生的信息
{
if (s.num==0) {
printf("\n無學生信息.");
return;
}
for (int i=0;i<s.num;i++){
printf("\n學號:%d\n基礎課學分:%-6.1f\n專業課學分:%-6.1f\n選修課學分:%-6.1f\n人文類課程學分:%-6.1f\n實驗性課程學分:%-6.1f\n ",s.stu[i].num,s.stu[i].basic,s.stu[i].spe,s.stu[i].choose,s.stu[i].peop,s.stu[i].lib);
}
}
void putone(struct stuType* as,int num)//修改一個學生信息
{
Input_aInfo(&as->stu[num]);
}
void Input_aInfo(struct studentInfo* as) //輸入一個學生的信息
{
do
{
printf("請輸入學生的學號:");
scanf("%d",&as->num);
}while(as->num<1||as->num>5);
printf("請輸入學生的基礎課成績:");
scanf("%f",&as->basic);
printf("請輸入學生的專業課成績:");
scanf("%f",&as->spe);
printf("請輸入學生的選修課成績:");
scanf("%f",&as->choose);
printf("請輸入學生的人文課成績:");
scanf("%f",&as->peop);
printf("請輸入學生的實驗課成績:");
scanf("%f",&as->lib);
printf("\n");
}
void Input_allInfo(struct stuType* s,int num) //輸入多個學生的信息
{
printf("\n請輸入 %d 組信息.\n",num);
for (int i=0;i<num;i++){
if (s->num==MUNMAX){
printf("\n已經輸入過成績,不能重復輸入,只能按2更改原始數據!");
break;
}
Input_aInfo(&s->stu[s->num++]);
}
}
int Search(struct stuType stu) //查找
{
int num;
do
{
printf("\n輸入學生學號(1-5):");
scanf("%d",&num);
}while(num<1||num>5);
for (int i=0;i<stu.num;i++)
if (stu.stu[i].num==num)
return i;
return -1;
}
void modify(struct stuType *p) //排序
{int i,j;float temp;
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
{if(p->stu[j].basic>p->stu[j+1].basic){
temp=p->stu[j].basic;
p->stu[j].basic=p->stu[j+1].basic;
p->stu[j+1].basic=temp;}
if(p->stu[j].spe>p->stu[j+1].spe){
temp=p->stu[j].spe;
p->stu[j].spe=p->stu[j+1].spe;
p->stu[j+1].spe=temp;}
if(p->stu[j].choose>p->stu[j+1].choose){
temp=p->stu[j].choose;
p->stu[j].choose=p->stu[j+1].choose;
p->stu[j+1].choose=temp;}
if(p->stu[j].peop>p->stu[j+1].peop){
temp=p->stu[j].peop;
p->stu[j].peop=p->stu[j+1].peop;
p->stu[j+1].peop=temp;}
if(p->stu[j].lib>p->stu[j+1].lib){
temp=p->stu[j].lib;
p->stu[j].lib=p->stu[j+1].lib;
p->stu[j+1].lib=temp;}
}
printf("全部課程成績的排序結果為:\n基礎課:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].basic);
printf("\n專業課:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].spe);
printf("\n選修課:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].choose);
printf("\n人文課:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].peop);
printf("\n實驗課:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].lib);
}
void sum(struct stuType *p)
{int i,b1=0,b2=0,s1=0,s2=0,c1=0,c2=0,p1=0,p2=0,l1=0,l2=0;
for(i=0;i<4;i++)
{if(p->stu[i].basic>=90.0)
b1++;
if(p->stu[i].basic<50.0)
b2++;
if(p->stu[i].spe>=90.0)
s1++;
if(p->stu[i].spe<50.0)
s2++;
if(p->stu[i].choose>=90.0)
c1++;
if(p->stu[i].choose<24.0)
c2++;
if(p->stu[i].peop>=90.0)
p1++;
if(p->stu[i].peop<8.0)
p2++;
if(p->stu[i].lib>=90.0)
l1++;
if(p->stu[i].lib<20.0)
l2++;
}
printf("\n基礎課程90學分以上的有%d個,不及格的有%d個",b1,b2);
printf("\n專業課程90學分以上的有%d個,不及格的有%d個",s1,s2);
printf("\n選修課程90學分以上的有%d個,不及格的有%d個",c1,c2);
printf("\n人文課程90學分以上的有%d個,不及格的有%d個",p1,p2);
printf("\n實驗課程90學分以上的有%d個,不及格的有%d個",l1,l2);
⑶ qgis怎麼linux系統中怎麼使用
在Linux主機安裝ssh伺服器是為了方便在Windows系統下使用SSHSecure Shell Client客戶端軟體與Linux主機系統進行文件共享和遠程登錄。注意,若使用SSH Secure Shell Client客戶端軟體登錄虛擬機中的Linux系統或共享文件必須配置虛擬機的乙太網連接方式為Bridged(橋接)模式,否則客戶端將無法連接ssh伺服器。
使用如下終端命令可以在Linux主機中安裝ssh伺服器:
vmuser@Linux-host:~$sudo apt-get install openssh-server
ssh伺服器安裝成功後,終端顯示如下圖所示:
⑷ qgis.exe無法定位程序輸入點sqlite3_rtree_geometry_callback於動態鏈接庫sqlite3.dll 怎麼解決
這種一般是版本問題,你使用的dll版本中沒有該函數。換個版本試驗一下