質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.26%

  • C

    2677questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Visual Studio

    1271questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • Windows 7

    291questions

    Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

  • makefile

    32questions

    make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

  • GTK+

    12questions

    GTK+とはGUIを作るために作られた、とても使いやすく機能に富んだツールキットです。クロスプラットフォームによる互換性と、使いやすいAPIを備えています。

GTKを用いて作成されたCプログラムをvisualstudio2017でコンパイル

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 100

前提・実現したいこと

2004年に作成されたGTKを用いたプログラムを改良することになったのですが、プログラム初心者のためコンパイルのやり方がわからず困っています。
ソースファイルの中にはmakefileというのものもあり、コマンドプロンプトにそのファイルを読み込ませようともしたのですが、何かファイルが足りないみたいなエラーでうまく行きませんでした。
また、今使ってるPC(windows7、64bit)にはvisualstudio2017を入れてみたので、そこでコンパイルなどできれば便利かなと思い、できればそこで開発していきたいと思っています。

該当のソースコード

#include <gtk/gtk.h>

試したこと

ソースコードには上記のincludeが入っていたのでそれっぽいファイルをソースコードと同じファイルに入れては見ましたが見つからないという感じでした。

補足情報(言語/FW/ツール等のバージョンなど)

makefileの中には

INSTDIR=c:/wingtk

CC=c:/wingtk/bin/gcc

CFLAGS=-s -mwindows -mno-cygwin -fnative-struct -I$(INSTDIR)/INCLUDE/ -I$(INSTDIR)/INCLUDE/G__~1 -I$(INSTDIR)/INCLUDE/ -L$(INSTDIR)/LIB/ -B$(INSTDIR)/BIN/ -I$(INSTDIR)/GDK/ -DHAVE_CONFIG_H -DUNICODE

OUTPUT="tsumiki2.exe"

SRCS="srcs/main.c" "srcs/gtk_func1.c" "srcs/gtk_func2.c" "srcs/controlpanel.c" "srcs/qlearning_main.c" "srcs/qlearning_func1.c" "srcs/qlearning_func2.c" "srcs/2tree.c"

OBJS="main.o" "gtk_func1.o" "gtk_func2.o" "controlpanel.o" "qlearning_main.o" "qlearning_func1.o" "qlearning_func2.o" "2tree.o" $(INSTDIR)/LIB/libgtk.dll.a $(INSTDIR)/LIB/libglib-2.0.dll.a $(INSTDIR)/LIB/libgdk.dll.a "rsrc.o"

all: compile_res
$(CC) -c $(SRCS) $(CFLAGS)
$(CC) -o $(OUTPUT) $(OBJS) $(CFLAGS)

compile_res:
c:/wingtk/bin/windres --include-dir $(INSTDIR)/INCLUDE/ --include-dir $(INSTDIR)/INCLUDE/G__~1 --use-temp-file -I rc -O coff -i "srcs/rsrc.rc" -o "rsrc.o" 

test: all
./$(OUTPUT)

clean:
del *.o

とあるのですが、何のファイルをどう配置すれば良いのでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

質問されている内容は、かなりハードルが高いことです。
正直に言うと、初心者には無理です。

makefileを見る限り、元はcygwin上でビルドする環境と思われます。
つまり、cygwin環境からVisualStudio2017環境への移行が必要ですので、
ここでcygwinとVisualStudio2017の知識が不可欠になります。

更に、2004年のプログラムという事はGTK+のバージョンは2.xと思われます。
(glib-2.0をリンクしているという事は、流石に1.xという事はないと思いますが)
現在のGTK+のバージョンは3.xです。

Ver.3は、Ver.2のソースコードもそこそこ動くのですが、あくまでそこそこです。
問題の一つや二つ起きる事は覚悟しなければなりませんし、その場合にはそれを解決するだけの
GTK+の知識が必要です。

更に言うと、現状ではGTK+はVisualStudio向けのライブラリは提供していないようです。
公式のサイトを見る限り、「ソリューションファイルは入っているから、自分でビルドしろ」と言っているようです。
(そして、そのビルド方法が書かれたページヘリンクが貼られていますが、それを見る限りかなり大変な作業です。GTK+は依存しているライブラリが多いので、なんとなくわかりますが)

昔は提供していたので、インターネット上を探せば見つかるかもしれませんが、あくまで「昔」のライブラリですので、最新のVS2017で使えないおそれがあります。

もしそれでもやるというのであれば、まず簡単なGTK+プログラムを公式のやり方通りMSYS2を使ってビルドする環境を整えてください。
VisualStudioでやろうとは考えないでください。簡単そうに見えて、逆に敷居が高くなってます。

MSYS2での環境であれば、ちょっとググったところGTK+2のパッケージも用意されているようなので、上記のバージョン違いの問題もあっさり解決できるかもしれません。

環境が整ったら、旧プロジェクトのビルド環境をそれに合わせて作りなおす必要がありますが、makefileを見る限りそれほど大きなプロジェクトでないようですし、下手に手を打つよりかはそちらが近道かと思います。


追記。
makefileはcygwinで行うものと書きましたが、「今の」cygwinでは手直しが必要です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/16 13:12

    うわぁ、バイナリ配ってないのか・・・。すなおにmsys2使うのが良さそうですね。
    makeファイルは書き直さないとダメですね。

    キャンセル

  • 2017/12/18 02:29

    詳しい解説ありがとうございます!
    今の自分ですと到底visualstudioではできないとわかりましたので諦めます!w
    そこで公式通りMSYS2を入れてみようと思います。
    また、ソースコードと一緒にgtk2のライブラリ(libフォルダやincludeフォルダがあったのであってると思います。ファイルの一つには「gtk+-bundle_2.24.10-20120208_win32.README」というのも有りました)もあったので、msys2上でなんとかできないか試してみます。

    キャンセル

  • 2017/12/18 17:39

    まあvcpkg使えばある程度は楽できると思うけど、msys2はええぞ。

    キャンセル

0

そのmake、控えめに言って話にならないですね。自分でSRCSに列挙されているソースファイル群をVSのプロジェクトにぶち込むべきかと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/16 04:17

    コメントありがとうございます。一度ソースコードをプロジェクトに入れようとしたのですが、

    既存のソースからプロジェクトを作成 → 途中で固まる
    VisualC++の空のプロジェクトで作成 → ソースコードを入れられない

    だったのでとりあえず空のCLRプロジェクトと言うもので作成して、そこにソースファイル、ヘッダファイルを入れてみたのですが、それもうまく行きませんでした

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.26%

関連した質問

同じタグがついた質問を見る

  • C

    2677questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Visual Studio

    1271questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • Windows 7

    291questions

    Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

  • makefile

    32questions

    make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

  • GTK+

    12questions

    GTK+とはGUIを作るために作られた、とても使いやすく機能に富んだツールキットです。クロスプラットフォームによる互換性と、使いやすいAPIを備えています。