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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

GTK+

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

makefile

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

Visual Studio

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

Windows 7

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

Q&A

解決済

2回答

4175閲覧

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

YukiYamashita

総合スコア7

C

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

GTK+

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

makefile

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

Visual Studio

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

Windows 7

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

0グッド

0クリップ

投稿2017/12/15 07:36

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

###該当のソースコード

C

1#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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

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 03:06

編集2017/12/16 03:10
katsuko

総合スコア3471

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yumetodo

2017/12/16 04:12

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

2017/12/17 17:29

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

2017/12/18 08:39

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

0

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

投稿2017/12/15 09:47

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YukiYamashita

2017/12/15 19:17

コメントありがとうございます。一度ソースコードをプロジェクトに入れようとしたのですが、 既存のソースからプロジェクトを作成 → 途中で固まる VisualC++の空のプロジェクトで作成 → ソースコードを入れられない だったのでとりあえず空のCLRプロジェクトと言うもので作成して、そこにソースファイル、ヘッダファイルを入れてみたのですが、それもうまく行きませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問