- 【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 16
786 :デフォルトの名無しさん[]:2015/04/14(火) 21:32:51.37 ID:O9K5PlsD - いままでC言語しかやってなくて、GUIは初めてだからよくわからないんだ。
もうちょっと教えてください。 ・・・qtじゃなくてc++の話になってる気もするけど。 ボタンが押されたら別関数をコールして処理は丸投げ、結果をテキストボックスに出力したい。 (別関数の部分はgccとコンソールで動作確認済み) gccで作ったファイルをプロジェクトに組み込んでビルドは通しけど、 on_pushButton_clicke()からコールすると定義されていないって怒られる。 単純に組み込んだだけだからクラス化していない。 on_pushButton_clicke()は MainWindowクラスの関数だから、クラス外の関数なんてしらねーよってこと? そうすると、cで作った処理をまるっとクラス化して、 MainWindowクラスの派生元のクラスになるようにしないとだめ? それともMainWindowクラスにcで作った処理を丸ごといれちゃうとか?
|
- 【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 16
790 :デフォルトの名無しさん[]:2015/04/14(火) 22:48:22.78 ID:O9K5PlsD - >ヘッダファイルや-lオプションでライブラリのリンクでも抜けてんだろ
mainwindow.cppの中でcのヘッダファイルはインクルードしてる。 Qtウィジットアプリケーションを選択して作ったプロジェクトに、gccで作ったファイルを追加しただけだと、 ライブラリのリンクとかビルドの設定がが足りてないってこと? 部品はgccで完成したから、あとはガワ作って移植するだけだー って思ってたんだけど移植の方法が全然分からんですよ・・・。
|
- 【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 16
791 :デフォルトの名無しさん[]:2015/04/14(火) 23:09:46.20 ID:O9K5PlsD - たとえば↓のcファイルを移植すると
◆test_1.c #include <stdio.h> #include "test_1.h" void test_1(void) { printf("hoge\n"); } ◆test_1.h void test_1(void); --------------------------------- ■mainwindow.cppでは↓って書いてる #include "mainwindow.h" #include "ui_mainwindow.h" #include "test1.h" ★ここ追加 〜省略〜 void MainWindow::on_pushButton_clicked() { test_1(); ★ここ追加 ui->textEdit->setText("hello"); } --------------------------------- extern "C" は試してたけどビルドが通らなくて何が間違ってるのか分かってなかった。 で、上の例で最低限の処理にしてみたらextern "C" で通った! 実際はcの関数内で構造体とか配列で色んな処理をしてるから、そっちでエラーになっていたのか・・・。 これさ、全部に対してextern "C"をやらないとだめってこと? 移植の方法を勉強しないといけないか・・・
|