• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:atlstr.hのインクルードによるエラーについて)

atlstr.hのインクルードによるエラーについて

bluecampusの回答

回答No.3

CStrinTを使う目的のみでのincludeだったら辞めて System::Stringクラスを使うと、const char* 型(Shift_JIS文字コード配列)、const wchar_t*(Unicode文字コード配列)と変換できるので、 System::StringをShift_JISに変換するところだけ、Encodingクラス(PtrToStringCharsとかMarshalクラスとかでも)で行うとか。 全部Encodingクラスでもいいですけど。

fancyoldfox
質問者

お礼

ご回答ありがとうございます。 System::StringクラスとEncodingクラスを用いても、Shift_JIS文字コード配列とUnicode文字コード配列と間の変換が可能ということですので、今後はそれらのクラスを活用したいと思います! ただ、現状といたしましては、すでにWin32コンソールアプリケーションプロジェクト下でCStirngを使用したプログラムの部品となるクラスを多数作成してしまっています。そのため、なるべくなら現在作っているプログラムまでは、CStringを使いたいというのが正直なところです…。

関連するQ&A

  • include<wtsapi32.h>でエラーがでる

    .netを使ってWTSQurySessionInformationのAPIを使う C言語プログラムを作ろうとしています。 ライブラリーにwtsapi32.lib ヘッダーにwtsapi32.h が必要と書いてあったので ライブラリーをインポートし、ヘッダーにPSDKの最新のものをいれましたが、エラーがでます。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\WtsApi32.h(109) : error C2061:構文エラー : 識別子 'LPWSTR といったものがたくさんエラーがでます、どうすれば 解決できるでしょうか。調べてもわからないため困っています。OSはXPを使ってます。

  • iostream インクルード時に発生するエラー

    C++ の勉強をするためにVisualStudio2008にて下記コードをビルドしたのですが、エラーが発生してビルドが失敗しました。 ■ コード #include <iostream> using namespace std; int main() { std::cout << "Hello World !"; return 0; } ■ 操作 空のコンソールアプリケーションを作成し、ソースファイルに追加>新しい項目 にて "temp.cpp" を追加、コードを入力。その後 ビルド > ソリューションのビルド を実行。 ■ エラー(一部) >> 「説明」 列 warning C4985: 'strlen': 前の宣言に属性が存在しません。 error C2039: 'wmemcpy_s' : '`global namespace'' のメンバではありません。 error C3861: 'wmemcpy_s': 識別子が見つかりませんでした error C2039: 'wmemmove_s' : '`global namespace'' のメンバではありません。 error C3861: 'wmemmove_s': 識別子が見つかりませんでした error C2039: 'memcpy_s' : '`global namespace'' のメンバではありません。 error C3861: 'memcpy_s': 識別子が見つかりませんでした error C2039: 'memmove_s' : '`global namespace'' のメンバではありません。 >>対応する「ファイル」列 d:\program files\microsoft visual studio 9.0\vc\include\exception d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd プロジェクトのプロパティやインストール時の構成などで何か問題があるのでしょうか。VisualStudio以外にはWindows SDK 、Windows SDK 6.0A、SQL Server2005などが導入されています。 再インストールするのもありかと思ったのですが、原因が分からないとまた同じ現象が発生しそうなため踏み切れません。 よろしくお願いします。

  • string.h内でエラー

    Visual C++ 2005でプログラムを組んでいます。 あるプログラムをビルドすると以下のようにstring.h内でエラーが大量に発生します。string.hをインクルードしないとエラーは出ないことからおそらくstring.hまわりの設定がおかしいとは思うのですがよくわかりません。 エラー 2 error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 3 error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 5 error C2143: 構文エラー : ';' が ',' の前にありません。c:\program files \ microsoftvisualstudio8 \ vc\ include\ string.h 136 宜しくお願いします。

  • VC++2010の「#include <」

    VC++ で、他人の作ったソースコードをビルドして実行してみています。 (WinPcapのデベロッパ向けのライブラリを使った、サンプルプログラムです。) VC++自体、あまり理解が深くないのですが、 「#include <」まで書くと、「ヘッダファイル名が表示される」プロジェクトと、「そうではない」プロジェクトがあります。 「そうではない」方のプロジェクトだと、ビルド時にincludeするライブラリが足りないとか、そんな感じのエラーが表示されます。 ぱっと見の違いは、「ヘッダファイル名が表示される」プロジェクトの場合は、 ソリューションエクスプローラに、「外部依存関係」というフォルダのショートカットがあり、ライブラリがどっさりあります。 「そうではない」プロジェクトについても、「#include <」で、ヘッダファイルを表示してくれるようにしたいのですが、どの様にすればよいのでしょうか?★ プロジェクトのプロパティの、 C++>プリプロセッサ>プリプロセッサの定義 リンカー>入力>追加の依存ファイル はどちらのソースも同じにしたのですが…。

  • エラーがでるようになりました。

    vs2005を使っているんですが、 「c:\documents and settings\rm\my documents\visual studio 2005\projects\o.c\o.c.cpp(17) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?」 というわけの分からない表示が出ました。 どのプログラムも実行できず、この表示が出ます。 急にそうなったんですが、特別なことをした覚えはありません。

  • Visual C++ 2008で<stdio.h>のインクルード文が使えない!?

    #include <stdio.h> int main(){ printf("hello!"); } で実行すると、 : warning C4627: '#include <stdio.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します .\■■■.cpp(5) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? と言ったエラーが起きてしまいます。 ちなみに、インクルードファイルらしき物を削除しまくった覚えがあります…。100%これが原因かと。 これが原因だとしたらどうすればいいんでしょうか? あと、DXライブラリが使えるように設定を変えたこともあります。 どこの何を変えたかは忘れてしまいましたけど。

  • includeファイルが開けない

    学校の課題用に配布されたプログラム(C++)を実行しようとしたのですが、 ビルドエラーが出てしまい、この解決方法がwebで調べてみてもわかりません。 当方、C++は初めてなのであまり詳しいことはわからないため、 こちらで質問しました。 エラーの内容は、 fatal error C1083: include ファイルを開けません。'fstream.h': No such file or directory というものです。 エラーが出た部分は #include "fstream.h" というふうになっているのですが、 この部分をいじっても解決されません。 また、プログラムはVC++6で書かれているようなのですが、 Visual Studio .NET 2003でやろうとしているのが間違いなのでしょうか? 不足点などあれば補足いたしますので、 よろしくお願いします。

  • VC++、windows.hのincludeエラー

    最近C++を勉強し始めたのですが出だしからつまづいてしまいました。 Visual Studio 2010 SP1 + Windows SDK 7.1 (OS:windows7 Professional 64bit版)を使用しているのですが、#include <windows.h> のみでビルドを行ったところ以下のように driverspecs.h でエラーが生じてしまいました。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2143: 構文エラー : ')' が '(' の前にありません。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2091: 関数は関数を返せません。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2059: 構文エラー : ')' <中略> 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(699): fatal error C1003: プログラム内のエラーが 100 個を超えました。コンパイルは中断されます。 1> 1>ビルドに失敗しました。 以下に driverspecs.h ファイルのエラー部分を抜粋して載せておきます。 __ANNOTATION(SAL_functionClass(__in char *);) #define __drv_functionClass(x) \ __drv_out(__drv_declspec("SAL_functionClass(\""#x"\")")) まだ始めたばかりで知識も乏しく、どのように対処をしていいものか困っています。 何か解決の糸口になるようなヒントでも構いませんので教えて頂けると助かります。 よろしくお願いします。

  • C# フォームを追加するとエラー

    C# 勉強中の者です。Visual Studio 2008 を使用しています。 既に一つのフォームで実行できているプロジェクトがあり、[プロジェクト]-[Windows フォームの追加]から追加してフォームを2つにしてみようと思いましたが、以下エラーが出てしまいます。 <エラー内容> ファイル内にデザインできるクラスがないため、このファイルのデザイナを表示できませんでした。ファイルの以下のクラスがデザイナで見つかりました: Form2 --- 基本クラス 'System.Object' をデザインできません。 <このエラーのヘルプ> Visual Studio 内のクラスが、画面上でデザインできるクラスから継承されていないため、ファイルのデザイナを開けません。 どうすればフォームを追加することができるのでしょうか? よろしくお願いします。

  • ヘッダファイル? malloc.hとかは自分で足したり作ったりできるのでしょうか

    CmachineでC言語を勉強していて、メモリの確保までたどり着きました。 でも、プログラムを実行できないんです。調べたところ、malloc.hやmemory.hがCmachineのincludeフォルダに入っていませんでした。 char *b; b = (char *)malloc(sizeof(char)*200); とか書いても実行できませんよね・・・。Cmachineは勉強するのに便利だし、ヘッダファイルを追加できないのでしょうか。includeフォルダにテキストファイルで書いて入れればできそうなのですが。 ちなみに、Visual C++ Express Editionでも同じプログラムを実行したのですが、できませんでした。あれもヘッダファイルが無いとかの問題なのでしょうか。あれは操作が複雑で難しくてよくわかりません。 アドバイスやいい方法をご存知の方、教えてください!!