• 締切済み

C++Builder2007でGdiPlus

標記の件、 C++Builder2006でGDI+を使っていたソースを2007にバージョンアップすると、エラーが出るようになります。 CodeGearのサイトに http://dn.codegear.com/fr/article/36871 GdiPlus ライブラリでは #define NO_STRICT をオフにする必要があります・・・等と書いてるのは見つけました。成る程、エラーコードも同じ感じです。 しかし、これを回避する方法であるところのSTRICTモードにする方法がわかりません。 #define STRICT や #include <windows.h> などを散りばめて試行錯誤しましたが状況は全く変わりません。 それとも根本的に勘違いしてるでしょうか? わかる方よろしくお願いします。

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★追記。 >また、インクルードされているであろう、gdi*.h には STRICTの文字列自体が見当たりません。  ↑  検索する『WinGDI.h』ヘッダで『STRICT』が使われていますよ。  他にも WinUser.h、WinNT.h でも『STRICT』定数を参照しているようです。 ・本当にヘッダファイルなどを検索してみましたか?

lachesis-r
質問者

お礼

皆さん有難うございます。 コンパイラオプションのシンボル定義の中に、NO_STRICT というのが有るのを見つけました。 これを削除(これも、ただ削除しても反映されず結構難儀しましたが)することでエラーを回避でき、実際にGDI+も使えるようになりました。 余談ですがSTRICTをgrepしたのは既に書きましたようにgdi*.hだけでした。 横着はダメですね。申し訳ありません。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス ・C++Builderは使っていないのですが、VC++2003.NET の環境では WinDef.h のヘッダに  次のような定義がありました。 #ifndef NO_STRICT #ifndef STRICT #define STRICT 1 #endif #endif /* NO_STRICT */  WinDef.h ファイルの13行~17行目です。  この定義より『NO_STRICT』が定義されていないときだけ『STRICT』が定義されていないと  『STRICT』を『1』で定義するという意味らしいです。 >GdiPlus ライブラリでは #define NO_STRICT をオフにする必要があります・  このオフという意味が『NO_STRICT』を定義するなという事ではないでしょうか。  つまり『STRICT』も定義していなければ『STRICT』が『1』となるので『STRICT』が『1』でないと  GDI+ は使えない?という事かな。 ・以上。参考に。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

> #define NO_STRICT をオフにする必要があります というのは > #define STRICT じゃなくて、 この#defineの行をコメントアウトするとか、 #undef NO_STRICT するということじゃないんですか?

lachesis-r
質問者

補足

その可能性も考えて、 #undef NO_STRICT #define NO_STRICT #undef STRICT #define STRICT など色々やってはみているんですが、ダメです。 また、インクルードされているであろう、gdi*.h には STRICTの文字列自体が見当たりません。

関連するQ&A

  • Borland CからBuilderへのプロジェクト変換について

    Borland C++ 5.01で作成されたアプリケーションの開発環境をBorland C++Builder 6の開発環境に移し変えることになったのですがBCB6で新しくプロジェクトを作り、ソースファイルを1つずつ移行させていったのですがコンパイルエラーが山ほどでてきます。 C言語自体、あまり詳しくないのでうまく説明できませんがOWL?というコンポーネントが使われている為かと。。。 1つずつ潰していけばいいのですが、もっと簡単な方法がないものかと試行錯誤しております。 何かプロジェクト変換するツールやこのようにすれば?というような意見、情報などないでしょうか?

  • C++Builder6 での複素数計算

    C++builder6 で複素数計算が出来なくて困っています、 UNIT1.CPPのヘッダー部分に  #include <vcl.h>  #pragma hdrstop  #include <iostream>  #include <complex.h>  #include "Unit1.h" //-----------------------------  #pragma package(smart_init)  #pragma resource "*.dfm" を書いて イベントハンドラ部分に変数の宣言   complex<double> z; として緑色三角形の実行ボタンをクリックすると   「未定義のシンボル complex」 と言うエラーが発生します、 この解決方法を教えて頂ければ幸いです、宜しくお願いします。 (なお C++builder5 では何の問題もなく複素数計算のソフトが出来ていました)   

  • c++builder6で複素数計算教えて下さい

    私は今までwindows xp を使い c++builder5 で復素数の電気関係の簡単なソフトを作って来ました、 これからはc++buildre6で複素数計算をさせたいのですが下記の様なエラーが発生して前に進めず に困っています(OS は windows xp 及び windows 8 でエラーは同じ様に発生) unit1.cppの  ヘッダー部分に #include <complex.h> を書き  イベントハンドラ部分に complex<double> z; と書いて 実行ボタンを押すと  complex<double> z; の行で 「未定義のシンボル complex」 のエラーが発生します 上記の解決方法を教えて頂ければ幸いです。

  • gdi+ LNK1103

    Windows2000、VC++6.0 mfc こんにちは。 gdi+を使ってJPEG 画像を保存しようと思ったらリンクエラーになってしまいました。以下状況です。 Platform SDKをダウンロードし、INCLUDEおよびLIBのパスをオプション-ディレクトリタ-インクルードファイル、ライブラリファイルに追加して最上位に移動しました。gdiplus.dllをダウンロードし、exeと同じフォルダに置きました。 StdAfx.h  #pragma comment(lib, "GdiPlus.lib")  #include <gdiplus.h>  using namespace Gdiplus; CxxxApp.h private: ULONG_PTR m_gdiplusToken; CxxxApp.cpp   BOOL CHogeApp::InitInstance(){    Gdiplus::GdiplusStartupInput gdiplusStartupInput;    Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);    … } void CxxxApp::OnPicture() {  CLSID encoderClsid;  GetEncoderClsid(L"image/jpeg", &encoderClsid);  LONG lQuality = 80;  EncoderParameters EncoderParams;  EncoderParams.Parameter[0].Guid = EncoderQuality;//------☆  EncoderParams.Parameter[0].NumberOfValues = 1;  EncoderParams.Parameter[0].Type = EncoderParameterValueTypeLong;  EncoderParams.Parameter[0].Value = (VOID*) &lQuality;  EncoderParams.Count = 1; … } この状態でビルドすると、 GdiPlus.lib(imagingguds.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください というメッセージが出ます。どうやら☆の行で出ているようなのですが、どうしていいのか分かりません。ちなみにこれはデバッグバージョンでのみ出現し、リリースバージョンでは何のエラーも出ません。 何か間違い、足りないものがあればご指摘ください。 お願いします。

  • Borland C Builder とOpenCVをリンクしたい。

    Borland C Builder とOpenCVをリンクしたい。 Borland C Builder V5でOpenCV V2.1.0を使おうとこの1週間試行錯誤していますが、やり方がわかりません。 http://opencv.jp/opencv2-x-tips/install-on-windowswindows32bit-64bit-visual-studio-opencv21 に書かれている通りにOpenCV-2.1.0-win32-vs2008.exeをDLしてCMAKEを実行させたのですが、Build内のbinやlibには何も生成されません。 OpenCV-2.0.0a-win32.exeも試しましたが同様です。 CMAKEはやはりマニュアル通りにソースはc:\OpenCV2.0 ビルドはc:\OpenCV2.0\Buildとし、Configure、ビルドフォルダー作成Yes、Borland Make Fileを選択してパスはdefault native computerにし、Configure、赤表示が出てConfiguring doneが出た後再度Configgure、Generateと操作していますが、結果のBuild内のbinやlibフォルダーには何も出力されませんし。 このCMAKEと言うのを使用するのは初めてで、使い方は分からないのでマニュアルどおり(と思っている方法)で行っています。 系列は違いますが、OpenGLの方はBorland C Builderとリンク出来、サンプルプログラムの実行も成功しております。 今回、OpenCVを使う必要があり、何方か私の操作ミスお分かりの方が居られましたら正しい方法をお教え下さい。 よろしくお願い致します。

  • AccessVBA GDI+ について質問です。

    AccessVBA GDI+ について質問です。 この度、GDI+の ClGdip.OpenFile(ImagePass) としたのですが、エラーが出ます。 gdiplus.dll は MDBファイルと同フォルダに入れてあります。 環境はWinXP-Access2000です。 GDI+の使用方法がいまいち理解できていませんので、 使い方を詳しくアドバイスしていただけると助かります。 APIの様にDeclare宣言とか必要なのでしょうか? ソースコードや参考サイト等がありましたら、 いろいろ教えてください。 よろしくお願いいたします。

  • Documentsand Settingsについて

    windows 7 のPCを使っているのですが、使用しているソフトウェア(C++ Builder 2009)をアンインストール時に一部データが残ってしまうため、完全に消去するために C:\Documents and Settings\All Users\ このフォルダに入りたいのですが、C:\Documents and Settings に入ろうとすると、アクセスを拒否されます。 アクセスできるようにする方法を教えて頂けませんでしょうか? C++ Builder 2009アンインストールに関しての詳細 http://support.codegear.com/jp/article/38836

  • Visual C++でのfelicaプログラム

    SONYのサイトで、SDK for NFC Starter Kit が公開されているので、ためしにFelicaカードの読み取りプログラムを作ってみようと思っています。 サンプルとして、C++が載っていましたので、Visual C++ 2010で動かそうとしましたが、 「error LNK2019: 未解決の外部シンボル __imp__initialize_library が関数 _wmain で参照されました」と表示されます。 プロジェクトのプロパティで、C/C++ → 全般 → 追加のインクルードディレクトリ もSDKのincludeのディレクトリを指定しましたし、 同じく リンカー → 全般 → 追加のライブラリディレクトリ もSDKのlibのディレクトリを指定しました。 エラーを解決する方法を教えてください。 よろしくお願いします。 なお、プログラムは簡単な下記のものでもエラーがでます。 #include "stdafx.h" #include <cstdio> #include <cstdlib> #include "felica.h" int _tmain(int argc, _TCHAR* argv[]) { initialize_library(); return 0; }

  • C言語でヘッダファイルを自作する

    C言語で#defineを用いてヘッダファイルを作成したのですが、 作成したコンパイルするときにヘッダファイルがオープンできません。 参考にしている資料があるのですが、そこに書かれているサンプルプログラムを 丸ごとコピーして作ったプログラムも同様にヘッダファイルがオープンできない というエラーが出るので、ヘッダファイルを定義する方法そのものが間違っていると 思うのですが、どこが間違っているのでしょうか? よろしければ正しい記述方法もお教えください。 #include <stdio.h> #if !defined SAMPLE_H #define SAMPLE_H wa(int a, int b) { return a+b; } #endif #include "sample.h" int main(){ printf("%d\n",wa(40,70)); return 0; } ヘッダファイルの定義の方法は他にもあるとは思いますが、 今回は#defineを用いた方法でお願いします。

  • Windows7のライブラリに関して

    Windows7のライブラリに関しての質問をさせていだきます。 保存場所を変えようと色々と試行錯誤しているうちに、 ミュージック内にあったマイミュージックフォルダーが消えてしまって、 既定値に戻すを行ってもライブラリの場所がマイドキュメントに変わってしまっていたりします。 そこで、ライブラリの状態を完全に初期の状態に戻す方法を教えていただきたいです。 ご存知の方、よろしくお願い致します。

専門家に質問してみよう