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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

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

Visual Studio

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

2回答

6400閲覧

libjpegをVisual Studio2017で使う

kuruto

総合スコア2

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

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

Visual Studio

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2020/06/05 09:13

前提・実現したいこと

画像の解像度を上げたときの補間法を実装するためにC言語で画像の拡大縮小(線形補間編)を参考にしていたのですが、このプログラムを実行するためにはlibjpegをインストールしてJPEGデータを扱えるようにする必要があると知りました。
その過程でlibjpegをインストール、解凍したあとどうするかで詰まってしましました。

試した方法1

libjpegをVC2017でビルドするに従って、libjpeg-9b(現時点での最新版ではないですが混乱を避けるために記事のバージョンに合わせました)を名前の変更までしました。

次にjpeg.slnを開こうとしたところVisal Studioが利用不可となり再読み込みをしても改善されませんでした。Visual Studioは2017において最新版まで更新しています。
また解凍と同時に付属していたインストール方法も確認しましたが、上記の参考URLはそれに即した内容になっていることを確認しています。

試した方法2

libJPEGのインストールとC言語での使用方法・使用例に従い動かそうとしましたが、コマンドプロンプトでは./configureが使えないと知りました。調べてみるとCygwinを用いることで使えるようだったので試してみましたがどれをインストールすればいいか分からなくなったことに加え、方向性が正しいか不安になったため質問させていただきました。

まとめ

質問が分かりにくくなってしまったため、ここでまとめさせて頂きます。
最終的な目的は画像補間プログラム(C言語で画像の拡大縮小(線形補間編))の実行なので、libjpegを扱えるように環境構築する方法を教えて頂きたいです。それに伴いVisual Stdioで行うことが望ましくない場合は別の方法で行おうと思います。また上記の試したこと1,2も方向性が正しくない場合もあるかと思いますので、これとは全く別の方法でも構いません。

一か月前にプログラミングに触れはじめた初心者のため基本的なことで間違っている可能性もありますが、ご教授頂けたら幸いです。

補足情報(ツールのバージョンなど)

windows 10
Visual Studio 2017
libjpeg-9b

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

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

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

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

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

y_waiwai

2020/06/05 09:15

> 次にjpeg.slnを開こうとしたところVisal Studioが利用不可となり とは、具体的にどういう動作となるんでしょうか
kuruto

2020/06/05 09:24

jpeg.slnをVisual Studio開こうとすると「ファイルが正しく読み取れません」と出力されます。 VSCodeでは開けているようで以下のように出力されます。 ��� Microsoft Visual Studio Solution File, Format Version 11.00 # Visual C++ Express 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpeg", "jpeg.vcxproj", "{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.ActiveCfg = Release|Win32 {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal Visual Studio 2017では「編集」から中身は読み取れる状態で以下のように出力されます。 怯ィ<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Release|Win32"> <Configuration>Release</Configuration> <Platform>Win32</Platform> </ProjectConfiguration> </ItemGroup> <ItemGroup> <ClInclude Include="jconfig.h" /> <ClInclude Include="jdct.h" /> <ClInclude Include="jerror.h" /> <ClInclude Include="jinclude.h" /> <ClInclude Include="jmemsys.h" /> <ClInclude Include="jmorecfg.h" /> <ClInclude Include="jpegint.h" /> <ClInclude Include="jpeglib.h" /> <ClInclude Include="jversion.h" /> </ItemGroup> <ItemGroup> <ClCompile Include="jaricom.c" /> <ClCompile Include="jcapimin.c" /> <ClCompile Include="jcapistd.c" /> <ClCompile Include="jcarith.c" /> <ClCompile Include="jccoefct.c" /> <ClCompile Include="jccolor.c" /> <ClCompile Include="jcdctmgr.c" /> <ClCompile Include="jchuff.c" /> <ClCompile Include="jcinit.c" /> <ClCompile Include="jcmainct.c" /> <ClCompile Include="jcmarker.c" /> <ClCompile Include="jcmaster.c" /> <ClCompile Include="jcomapi.c" /> <ClCompile Include="jcparam.c" /> <ClCompile Include="jcprepct.c" /> <ClCompile Include="jcsample.c" /> <ClCompile Include="jctrans.c" /> <ClCompile Include="jdapimin.c" /> <ClCompile Include="jdapistd.c" /> <ClCompile Include="jdarith.c" /> <ClCompile Include="jdatadst.c" /> <ClCompile Include="jdatasrc.c" /> <ClCompile Include="jdcoefct.c" /> <ClCompile Include="jdcolor.c" /> <ClCompile Include="jddctmgr.c" /> <ClCompile Include="jdhuff.c" /> <ClCompile Include="jdinput.c" /> <ClCompile Include="jdmainct.c" /> <ClCompile Include="jdmarker.c" /> <ClCompile Include="jdmaster.c" /> <ClCompile Include="jdmerge.c" /> <ClCompile Include="jdpostct.c" /> <ClCompile Include="jdsample.c" /> <ClCompile Include="jdtrans.c" /> <ClCompile Include="jerror.c" /> <ClCompile Include="jfdctflt.c" /> <ClCompile Include="jfdctfst.c" /> <ClCompile Include="jfdctint.c" /> <ClCompile Include="jidctflt.c" /> <ClCompile Include="jidctfst.c" /> <ClCompile Include="jidctint.c" /> <ClCompile Include="jmemmgr.c" /> <ClCompile Include="jmemnobs.c" /> <ClCompile Include="jquant1.c" /> <ClCompile Include="jquant2.c"> <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Disabled</Optimization> <BufferSecurityCheck Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</BufferSecurityCheck> </ClCompile> <ClCompile Include="jutils.c" /> </ItemGroup> <PropertyGroup Label="Globals"> <ProjectGuid>{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}</ProjectGuid> <Keyword>Win32Proj</Keyword> <RootNamespace>jpeg</RootNamespace> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> <WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings"> </ImportGroup> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <Optimization>Full</Optimization> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>false</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions> <OmitFramePointers>true</OmitFramePointers> <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> </Link> </ItemDefinitionGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> </Project>
kuruto

2020/06/05 09:24

長くなって申し訳ありません
guest

回答2

0

libjpegを使うのが目的ではなく、画像補間処理の実装が目的なら、別の方法で画像を読み書きするという手もありますが。
GDI+ --- 画像ファイル読み書き

投稿2020/06/06 05:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kuruto

2020/06/07 12:42

回答ありがとうございました。 教えていた出したリンクをもとに今後試してみたいと思います。
guest

0

ベストアンサー

jpegst9d.zipをダウンロードしてVisual Studio 2017でビルドしてみました。
結論から言いますと、特にエラーも無くビルドできました。
以下手順です。

  1. jpegst9d.zipを適当なフォルダに展開
  2. コマンドプロンプトでVisual Studio用のMakefileを実行
    nmake -f makefile.vs setup-v16
  3. Visual Studio 2017を起動して、jpeg.slnを読込む
  4. プラットフォーム ツールセットをVisual Studio 2017 (v141)に変更
  5. プロジェクトをビルド

2.はプロジェクト ファイルをリネームします。setupcopy-v16にするとコピーしますが、どちらでもいいとは思います。
参考サイトに書かれている通り、Debug用のソリューション構成が用意されていないので、そこは必要に応じて作成してください。
※ライブラリをビルドしただけなので、プログラムが正常動作するかのテストは行ってないです。


以下追記です。
ついでにjpegsr9bをダウンロードして、ビルドしてみました。
jpeg-9bにはmakefile.vcしかないので(当方の環境にはVisual Studio 2010がインストールしてあるので、nmake でも実行できそうですが)、以下のようなバッチファイルを作成して実行します。

BAT

1ren jconfig.vc jconfig.h 2ren makejsln.v10 jpeg.sln 3ren makeasln.v10 apps.sln 4ren makejvcx.v10 jpeg.vcxproj 5ren makejfil.v10 jpeg.vcxproj.filters 6ren makecvcx.v10 cjpeg.vcxproj 7ren makecfil.v10 cjpeg.vcxproj.filters 8ren makedvcx.v10 djpeg.vcxproj 9ren makedfil.v10 djpeg.vcxproj.filters 10ren maketvcx.v10 jpegtran.vcxproj 11ren maketfil.v10 jpegtran.vcxproj.filters 12ren makervcx.v10 rdjpgcom.vcxproj 13ren makerfil.v10 rdjpgcom.vcxproj.filters 14ren makewvcx.v10 wrjpgcom.vcxproj 15ren makewfil.v10 wrjpgcom.vcxproj.filters

そうすると、

jconfig.h jpeg.sln apps.sln jpeg.vcxproj jpeg.vcxproj.filters cjpeg.vcxproj cjpeg.vcxproj.filters djpeg.vcxproj djpeg.vcxproj.filters jpegtran.vcxproj jpegtran.vcxproj.filters rdjpgcom.vcxproj rdjpgcom.vcxproj.filters wrjpgcom.vcxproj wrjpgcom.vcxproj.filters

というソリューションとプロジェクトファイルができます。
jpeg.slnVisual Studio 2017で開くと、「ソリューション操作の再ターゲット」というダイアログが出るので、そのまま OK。
jpegプロジェクトをビルドすれば、ライブラリができました。
さらにapp.slnもビルドしてみましたが、とくにエラーもなく完了しました。

どちらにしてもMakefileは使えないので、ソリューション/プロジェクトファイルさえ準備できれば、Visual Studioでビルドできるはずです。

その他のソリューションは問題なくビルドできるのでしょうか?
プロジェクトのプロパティを見た感じ特別なことはやってないようなので、新規にプロジェクトを作成して、ソースファイトヘッダーファイルを追加しても、ライブラリは作成できるのではないかと思います。

投稿2020/06/06 04:09

編集2020/06/07 07:50
Bull

総合スコア986

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

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

kuruto

2020/06/07 02:49

回答ありがとうございます。 やはりjpeg.slnが利用不可となってしまいます。少し気になったのですが、解凍の際にLhaplusを使ったのがまずいという可能性はありますか?
Bull

2020/06/07 06:34 編集

私は Lhaplus を使用してないのでエクスプローラーで展開しました。気になるのでしてら、エクスプローラーで展開し直しては如何でしょうか。 私は http://www.ijg.org/jpegsr9d.zip ( http://www.ijg.org/files/jpegsr9d.zip ) をダウンロードしました。参考サイトとは手順が違います。私の回答と同じで順でやってダメだったということでしょうか? Visual Studio 2015 ? 用のソリューション/プロジェクトが用意されているようなので、エラーになることは考えにくいのですが。 jpeg.sln の先頭から数行を確認してみてください。 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28307.329 MinimumVisualStudioVersion = 10.0.40219.1 となっていますか?
kuruto

2020/06/07 09:59

7zipでもやってみたのですが結果は変わりませんでした。 手順はBull様に示して頂きました通りに進めております。 VSCodeで開いた場合は先頭の数行はその通りになっていましたが、Visal Studio2017で開いたときはそうではありませんでした。また開いた時のファイル名もjpeg.slnからjpeg.vcxprojとなっているのも気になります。 VMwareの仮想環境上で動かすか、そもそもVSCodeを使って環境構築しなおす道も視野に入れたほうがいいかもと考えております。ご意見お聞かせください。
Bull

2020/06/07 10:30

> Visal Studio2017で開いたときはそうではありませんでした すいません。状況がよく分かりません。 ソリューションとしては読み込めないということでしょうか? 何らかのエラーが出ているのであれば、それを明示して頂けますか? あるいは、画像があると、よりはっきりすると思われます。 > また開いた時のファイル名もjpeg.slnからjpeg.vcxprojとなっているのも気になります ソリューションにはひとつ以上のプロジェクトを含みます。 jpeg.sln がソリューションで、jpeg.vcxproj がプロジェクトです。 Visual Studio に読込むと、jpeg というソリューションの中に jpeg というプロジェクトがあります。 回答の補足でも書きましたが、新規プロジェクトを作成して、ソースファイルを追加してみては如何でしょうか?
Bull

2020/06/07 12:22

ライセンスの問題はよくわからないのですが、ソースファイルで提供されているので、ライブラリにこだわる必要はないと思います。 技術的には、個別の関数を使用することも可能だと思われます。依存関係のある関数もあろうかと思いますが、プログラムに必要な関数(ソース)のみを使うのはどうでしょうか。 必要な関数のみを作成してるプロジェクトに追加して、使うことも可能では無いかと思います。
kuruto

2020/06/07 12:41

返信遅れまして申し訳ありません。 ご指摘いただきました通り、新規プロジェクトを立ち上げてからソースファイルにドラッグアンドドロップすることでビルドに成功しました。 今までは直接jpeg.slnファイルを「プログラムから開く」で実行していたのでそれがうまくいかなかった原因かと思われます。 とても助かりました。丁寧かつ迅速な回答に心から感謝申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問