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

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

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

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

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Visual Studio

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

3回答

1813閲覧

「;」でコメントアウトしているC言語ソースファイルとは?

groggy_egg

総合スコア24

C

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

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Visual Studio

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2021/02/12 07:50

JumanのDLLを作ろうと思い

  • ここからjuman-7.01.tar.bz2をインストール
  • Visual Studio Community 2017でC++コンソールアプリケーションを作成
  • 解凍したフォルダをプロジェクトにD&D
  • 実行

の手順で作業したところ
ソースファイルを開けません "juman.h" というエラーになりました。

  • ここを参考にSDKバージョンを確認しましたが最新でした。

  • WndowsSDKバージョンを10.0.16299.0 10.0.17763.0 8.1にそれぞれ変更して実行しましたがダメでした。

また、

  • JUMAN.connect.c というファイルでは「;」でコメントアウトしているソースコードがあり、そこでも大量にエラーになっています。

JUMAN.connect.cをどうにかできればエラーが減らせると思うのですが、なぜ.cのファイルで「;」のコメントが使われているのかがわかりません。
追加でプロジェクトに設定が必要なのでしょうか?

どなたかアドバイスお願いします。

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

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

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

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

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

Zuishin

2021/02/12 08:06

コンパイル済みのものを使えば良いのでは?
guest

回答3

0

どなたかアドバイスお願いします。

当該のソースコードは、Unix系configuremakeを行うことが前提のソースコード形態となっています。Visual Studioから扱うには、相応の設定変更や、もしかしたらコード修正も必要となる可能性が見込まれます。

JUMAN.connect.c というファイルでは「;」でコメントアウトしているソースコードがあり、そこでも大量にエラーになっています。

これは直接Cコンパイラに投げ込むソースコードではありません。

投稿2021/02/12 07:56

編集2021/02/12 08:01
maisumakun

総合スコア146018

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

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

groggy_egg

2021/02/13 01:43

VisualStudioは試しに動かすために使っただけなのでこの環境に特別こだわりはありません Linuxの仮想環境があるのでそちらでできるならそちらでできます exe配布されている方に同名の変換済みファイルがあったので 適宜除外しながらやろうとは思います
guest

0

ベストアンサー

C++ は言語仕様では言語のことしか決めておらず、開発ツールや実行環境は多様です。 実行環境によっても差は大きく、各実行環境向けに個別のプログラムを作らなければならない場面もあります。 書いたプログラムのどの部分は実行環境のどういう性質に依存していてどれを選択すべきなのかといった切り分けを補助する仕組みとして autotools と呼ばれる仕組みが作られました。

autotools を使って configure というスクリプトを生成してパッケージに含めておき、コンパイルする前に configure を実行することでソースコードが各環境向けに調整されたものが生成されるという手順がとられます。

が、 configure も configure を実行可能な環境が揃っていなければ無意味で、 Windows の標準的な環境では実行できません。

また、今回の質問の要である JUMAN.connect.c は cpp (C プリプロセッサ) と sed での文字列置換によって辞書ファイルを生成する元になるもので、それ自体は C のプログラムではありません。 sed もまた (Windows 版は存在するので入れれば処理は出来ますが) 標準的な Windows 環境にはないでしょう。


要するに、 Visual Studio でのビルドは想定されていないのでどうしてもやりたければ内容を理解してあなたが必要に応じて書き換える必要があるということです。

ドキュメントにも Windows 上での正確なビルド手順は記載されていませんが、おそらく MSYS2Cygwin を導入してそれを使用することでビルドできると思います。

投稿2021/02/12 09:05

SaitoAtsushi

総合スコア5684

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

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

yumetodo

2021/02/12 15:04

せっかくなのでと、とりあえずMSYS2でコンパイルを試みましたが、うーん。最近configureする機会がなかったもんだからなんで-lregexされてないのかわからん。 /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -o makeint.exe makeint.o trans.o ../lib/libjuman.la libtool: link: gcc -g -O2 -o .libs/makeint.exe makeint.o trans.o ../lib/.libs/libjuman.a C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ../lib/.libs/libjuman.a(grammar.o):C:\msys64\home\yumetodo\juman-7.01\lib/grammar.c:27: multiple definition of `JumanPath'; makeint.o:C:\msys64\home\yumetodo\juman-7.01\makeint/makeint.c:28: first defined here C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ../lib/.libs/libjuman.a(grammar.o):C:\msys64\home\yumetodo\juman-7.01\lib/grammar.c:26: multiple definition of `CurPath'; makeint.o:C:\msys64\home\yumetodo\juman-7.01\makeint/makeint.c:27: first defined here C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ../lib/.libs/libjuman.a(juman_lib.o): in function `compile_unkword_patterns': C:\msys64\home\yumetodo\juman-7.01\lib/juman_lib.c:499: undefined reference to `regcomp' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ../lib/.libs/libjuman.a(juman_lib.o): in function `recognize_onomatopoeia': C:\msys64\home\yumetodo\juman-7.01\lib/juman_lib.c:739: undefined reference to `regexec'
groggy_egg

2021/02/13 01:38

linuxの仮想環境があるのですが、makefileの設定を変更したらDLL形式での出力もできるのでしょうか? どうしてもWindows,VisualStudioでやらなければいけないということではないので DLL形式で出力できる方法があるのであれば教えていただければと思っています。
yumetodo

2021/02/13 02:33

msys2環境でやるなり、linuxでmingwを使ってクロスコンパイルすればできると思いますがね。
guest

0

他にいい方法が見つかったのでそちらを試してみます。

ちなみにタイトルに対する回答はこちらです。
「;」でコメントアウトしているC言語ソースファイルとは?
SaitoAtsushiさんの回答の引用です
>sed での文字列置換によって辞書ファイルを生成する元になるもの

ベストアンサーを再設定しました。

投稿2021/02/13 05:31

編集2021/02/13 07:16
groggy_egg

総合スコア24

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

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

Zuishin

2021/02/13 05:38

具体的な方法を書いてください。
groggy_egg

2021/02/13 05:40

Google Coraboratry で環境構築して実行してみます
Zuishin

2021/02/13 05:45

脈絡がありません。この質問と回答は資料として残ります。編集し直して残せる品質に仕上げてください。
Zuishin

2021/02/13 05:47

念のため、こういう質問です。 > 「;」でコメントアウトしているC言語ソースファイルとは?
groggy_egg

2021/02/13 05:53

現時点では具体的な回答が得らておらず、自己解決も出来そうにないため 他の方法で実現することにしたということです。 ちなみに私が見た限り、最も具体性のない回答はあなたの回答でした。
groggy_egg

2021/02/13 05:58

一応補足しておきますが。具体的な解決策につながる回答という意味です。 質問タイトルに対応する回答 「;」でコメントアウトされている形式のファイルはどのような環境で使用されているものか? という質問に対しての回答はなく 質問に至った経緯、目的である「DLLを作成したい」 に対する直接的な解決策も現時点ではありません。 また、エラーに対する対応策「juman.hが開けない」に対する 回答も得られていません。 このまま議論を続けることは可能ですが 私は別な手段を実行する方が現実的だと判断し質問を放棄することを判断したということです。
Zuishin

2021/02/13 05:58

私は回答をしていません。私の見る中で最も回答と程遠いただのメモ書きが、あなたの回答です。
Zuishin

2021/02/13 05:59

議論ではなく、評価です。あなたの回答は回答の体をなしていないので書き直しなさい。
groggy_egg

2021/02/13 06:02 編集

あなたの投稿が回答でないのであれば、質問修正依頼という方法で投稿すべきだと思います。 それがここの利用規約ではないのでしょうか? 「追記」あなたの葉質問修正依頼でしたね、失礼
Zuishin

2021/02/13 06:02

意味がわかりません。整理して落ち着いてからどうぞ。
groggy_egg

2021/02/13 06:04

私が投稿したのは解決策であり「回答」ではありません。 このまま返答もせず放置するのも迷惑と思い質問を閉じようとしているだけです。
Zuishin

2021/02/13 06:06

DLL が必要なだけならコンパイル済みの物が公開されているのでそれを使えばいいだけ。それが必要なのか、それともコンパイルの方法自体が必要なのか、それがこの質問からは読み取れなかったので修正しろと依頼をした。 あなたはそれに答えずこのような意味不明な回答をした。 これが事実であり、規約のどこに触れているのか全くわからない。そもそも質問はセミコロンについてのもので、この回答とは全く脈絡がない。 筋道立てて書き直しなさい。
Zuishin

2021/02/13 06:09

繰り返すが、質問はこれ。 > 「;」でコメントアウトしているC言語ソースファイルとは? これは解決しているはずだ。そして自分で解決したわけじゃない。
groggy_egg

2021/02/13 06:09

DLL形式のものが公開されているのですか? >修正しろと依頼をした。 それは依頼ではなく命令ですよね? >そもそも質問はセミコロンについてのもので、この回答とは全く脈絡がない。 ではそれに対する回答をあなたはしましたか?
Zuishin

2021/02/13 06:10

修正依頼に返事がなかったので回答はしていない。DLL は存在する。
Zuishin

2021/02/13 06:12

DLL が存在するのは質問の最初のリンク先だ。よく見ろ。
groggy_egg

2021/02/13 06:12

私が返事をしなかったのはコンパイル済みの「もの」 という表現がexe形式のものを指すと解釈したからです。 質問の意図を理解していないと感じたため返答はしませんでした。
Zuishin

2021/02/13 06:14

返答しないから理解できないんだろう。使えないかどうかダウンロードして確かめたのか?
Zuishin

2021/02/13 06:15

確かめてないなら今すぐやれ。
groggy_egg

2021/02/13 06:16

あいまいな表現を使ったため正しく伝わっていないのです。 そもそもダウンロードインストールして使うつもりではありません。 だからDLL形式と言っているのです。 質問の意図を理解できていないのですか?
Zuishin

2021/02/13 06:17

DLL が何か知らないのか? インストールして使うものだぞ?
Zuishin

2021/02/13 06:20

それが何?
groggy_egg

2021/02/13 06:20

DLLを作成して実行するということをすでにテスト済みです。 インストールはしていません。
Zuishin

2021/02/13 06:20

読んでないけど DLL はインストールしないとどこかに書いてあるの?
groggy_egg

2021/02/13 06:21

DLLはインストールして使うものだとあなたは言いましたが 私はインストールせずにDLLを利用するテストをすでにしました。
Zuishin

2021/02/13 06:21

DLL を作成済みなら解決だろう。その方法を具体的に書け。
Zuishin

2021/02/13 06:22

あとインストールという言葉の意味も調べておけ。
groggy_egg

2021/02/13 06:23

公式ページの配布物はWindows用とbz2形式のもの両方ダウンロードしていますが .dll形式のファイルは見当たりません。 どこにあるのでしょうか?
groggy_egg

2021/02/13 06:25

テストで作成したDLLはテスト用の文字列を表示するだけのプログラムのものであり この質問のソースコードのものではありません。 ただDLLファイルをビルドして実行するだけのテストなので
groggy_egg

2021/02/13 06:27

資料として残るものにその言葉遣いは不適切なのではないでしょうか?
Zuishin

2021/02/13 06:29

なら回答を適切に書き換えろ。こちらのコメントはそれを見て消す。
groggy_egg

2021/02/13 06:32

自分にとって不都合だから消すのですか? あなたにとって不都合だから書き直さなければならないのですか?
Zuishin

2021/02/13 06:34

不適切なものは直すのが当然だろう。お前の世界では違うのか?
groggy_egg

2021/02/13 06:35

直っていませんよ
Zuishin

2021/02/13 06:37

ダウンロードして確かめたところ、DLL は無かった。従って DLL をそこからダウンロードして使用することはできない。他のいい方法を具体的に書くように。それを見て直す。
groggy_egg

2021/02/13 06:37

それを質問しているんですが?
groggy_egg

2021/02/13 06:38

そして言葉遣いが直っていませんよ
Zuishin

2021/02/13 06:39 編集

DLL があるというのは私の勘違いで、別の質問と間違えたものと思われる。 それとは別に この回答は質問の回答になっていないので書き直すように。
groggy_egg

2021/02/13 06:42

編集できないようなのでここに書いておきます 「;」でコメントアウトしているC言語ソースファイルとは? SaitoAtsushiさんの回答の引用です >sed での文字列置換によって辞書ファイルを生成する元になるもの
Zuishin

2021/02/13 06:42

編集できる。やり直し。
groggy_egg

2021/02/13 06:44

解決方法は編集できませんよ
Zuishin

2021/02/13 06:46

自分の自己解決が編集できることを確認した。「編集」と大きく書かれたボタンを押せ。
groggy_egg

2021/02/13 06:47

できました。 でも命令されてやるのはなんだか気分が悪いなぁ
Zuishin

2021/02/13 06:48

編集されてない。やり直し。
groggy_egg

2021/02/13 06:51

言葉遣いが直ってない、やり直し。
Zuishin

2021/02/13 06:51

直したら直す。三回目だけどもう一度言った方がいいか?
groggy_egg

2021/02/13 06:53

コメント消したらスクショ貼りますね
Zuishin

2021/02/13 06:54

修正を確認しました。お疲れ様でした。
Zuishin

2021/02/13 06:56

私の過去のコメントは修正しなくていいという意味と受け取ったのでそのまま残しておきます。
Zuishin

2021/02/13 06:58

ベストアンサーは外すことができます。自分で解決したわけではないので、最も役に立った回答に付け直すことをお勧めします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問