• 締切済み

コンパイル時に警告発生「MSXML2・・・」の件

VB2017でプロジェクトをビルドすると次の警告が出てしまいます。 どなたかご教授頂けると助かります。宜しくお願いします。 ちなみにコンパイルの対象CPUは、AnyCPUで「32ビットを優先」のチェックを外しています ●警告 「COM 参照 "MSXML2" をパス "C:\Windows\SysWOW64\msxml6.dll" から処理しています。'SAXAttributes60.getValue' の引数のうち少なくとも 1 つをランタイム マーシャラーでマーシャリングできません。 したがってこのような引数はポインターとして渡され、アンセーフ コードの使用が必要になります。」 ●環境 Windows10 Pro Visual Stadio 2017 ●プロジェクトの参照設定 Microsoft XML 6.0 以上、宜しくお願いします。

みんなの回答

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

.NETではメモリー領域のライフタイムが自動で管理され、不要になれば自動で解放されます。 これはマネージド環境と呼ばれています。 .NETではないランタイム環境ではメモリー領域はセルフ管理です。 これはアンマネージド環境と呼ばれています。 マーシャラーはこのマネージドとアンマネージドの仲介をするクラスですが、利用には前提があって、その前提から外れる処理が必要になっているので、前提に合うようアンセーフコード(マネージドで記述するアンマネージド処理を指す)が必要になっているというメッセージです。 マネージドでランタイム環境が行っているリソース管理検査がアンセーフコード内の処理については行えないので、メモリーリークやランタイムエラーの原因になる事があるための警告ですが、VBではビルド時に内部で自動生成されている要素に対してのそのメッセージの原因に対しては手出しができません。 唯一できる可能性があるとすればワーニングを黙らせる事くらいです。 https://www.atmarkit.co.jp/fdotnet/dotnettips/856vsdisablewarning/vsdisablewarning.html

関連するQ&A

  • win32アプリケーションコンパイル時のエラー

    #include <windows.h> int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance , LPSTR lpCmdLine, int cmdShow) { MessageBox(NULL,"この文字が出ます","メッセージ",MB_OK); return 0; } 上記ソースをコンパイル時に以下のエラーが出ます ------ ビルド開始: プロジェクト: kcn01, 構成: Debug Win32 ------ リンクしています... MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 C:\C++練習\kcn01\Debug\kcn01.exe : fatal error LNK1120: 外部参照 1 が未解決です。 ビルドログは "file://c:\C++\kcn01\Debug\BuildLog.htm" に保存されました。 kcn01 - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== 2005とSDKを一緒に使用するにある手順1~5は全て行いました ウィンドウズアプリケーションは普通に動作するのですが 空のプロジェクトにして↑のソースをコンパイルするとエラーが出ます 何か原因がわかる方よろしくお願いします。

  • ANT によるJSPコンパイル方法

    build.xmlを使用してJSPのコンパイルをしたいのですが、 記載方法が分からずに困っています。 EJBの記述方法はネットで参照できるのですが、JSPをコンパイルする 記載方法を見つけることは出来ませんでした。 JSPもwlappcでコンパイルできるという考え方自体が間違っているのでしょうか? 下記にような記述で実行してみましたが、ダメでした。 もし、アドバイスが御座いましたら頂けると嬉しいです。 <target name="appc"> <wlappc debug="True " source="${jspt1.dir}/jsp" output="${jspt2.dir}/jsp " /> </target>

    • ベストアンサー
    • Java
  • CreateObjectとNewの違い

    Microsoft XML Parserを使用したいと思っています。 VBを立ち上げ、標準EXEのプロジェクトで、参照設定を Microsoft XML v2.6(なぜ2.6か不明) にして、 dim xDoc as MSXML.DOMDocument set xDoc = New MSXML.DOMDocument とコーディングすると、実行時に、 コンパイルエラー:ユーザ定義型は定義されていません*** と怒られます。 でも、 Dim xDoc As Object Set xDoc = CreateObject("MSXML.DOMDocument") とすると、実行できます。 どうして、***のようなエラーが出るのですか? 両方ともエラーが出るならつじつまが合っている気がするのですが、 そうじゃないのですか? 環境は OS:Win98SE,VB6.0(SP5),IE5.5(SP1) です。 よろしくお願いします。

  • JDownloaderがコンパイルできません。

    ソースが公開されているJDownloaderというhttpクライアントソフトを コンパイルしたいと思っています。まず最初にeclipseを導入しsvnを 読み込めるようにしました。 SVNからソースコードをチェックアウトしソースコードのダウンロード までは、うまくいったのですが、いざコンパイルしようと思っても よくやり方が分からないのでコンパイルできませんでした。 ネットを調べてみるとantというビルドツールを使うとまとめて コンパイルできると書いてありましたし、一見antのbulid用の 設定ファイルだと思われるbulid.xmlもbuildのフォルダの中に あったのでこれを使ってビルドするのかなと思い、eclipseで build.xmlを右クリックして、実行>antビルドを行いましたが エラーが発生。その後環境変数をいじったり、build.xmlの中身 を少し編集して再実行したところ今度はantがエラーを吐かずに 終了してしまうという現象でお手上げ状態です。 ならjavac.exeを直接叩いてMain.javaをコンパイルしてやろうかなとも 思いましたがシンボルが解決できません等、多数のエラー100個以上が発生しこちらもうまくいきません。多分依存関係がうまく解決できて いないのが原因だと思うのですが、こちらもまたよく分からないので 手が打てない状態です。 ご質問は、どうすればJDownloaderをビルドして使える状態に出来る のでしょうという事です。現在の私の知識では難しいようなので お知恵をお借りできれば嬉しいです。 以下は現在の私の環境や詳細情報を載せさせていただきます。 環境変数(抜粋): userの環境変数  PATH   C:\Program Files\sun\sdk\bin;C:\Program Files\Java\jre6\bin; システムの環境変数  CLASSPATH   .;C:\Program Files\QuickTime\QTSystem\QTJava.zip  JAVA_HOME   C:\Program Files\sun\sdk  path   C:\Perl\site\bin;C:\Perl\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem\ カレントディレクトリC:\jdownloader\trunk\srcでの "C:\Program Files\sun\sdk\jdk\bin\javac.exe" "C:\jdownloader\trunk\src\jd\Main.java" -classpath .; の標準エラー出力。 長いので最初の方数行のみ張ります。 .\jd\captcha\pixelgrid\Captcha.java:384: 警告:この文字は、エンコーディング MS932 にマップできません。 * KOnvertiert den Captcha gemテ、テ? dem neuen newColorFormat (Mix aus RGB oder ^ .\jd\captcha\JACController.java:33: パッケージ net.miginfocom.swing は存在しません。 import net.miginfocom.swing.MigLayout; ^ .\jd\gui\swing\components\BrowseFile.java:29: パッケージ net.miginfocom.swing は存在しません。 import net.miginfocom.swing.MigLayout; ^ .\jd\captcha\configuration\JACScript.java:806: 警告:この文字は、エンコーディング MS932 にマップできません。 * verkleinert werden. So groテ? wie mテカglich, so klein wie nテカtig Wenn ^ .\jd\captcha\pixelobject\PixelObject.java:319: 警告:この文字は、エンコーディング MS932 にマップできません。 logger.severe("Objekt scheint sehr groテ? zu werden. objectColorContrast zu hoch?"); ^ 以上です。他必要情報などございましたらご指摘ください。 よろしくお願いいたします。

  • eclipseとantのコンパイル結果が異なる件について。

    eclipseとantのコンパイル結果が異なる件について。 coberturaの導入を検討してい原因が分からず困っています。 困っているのはcobertura自体ではなく、antでコンパイルしたクラスファイルがどうもおかしいのです。 ※antはdos上ではなく、eclipseで行いましたが、dosでも同様のようでした。 eclipseでコンパイルしたクラスファイルの半分弱のサイズになっています。 本来は同じものになるのを期待していたのですが・・・。もちろん何か私の設定ミスだと思いますので、アドバイス頂けないでしょうか。 クラス1 package sample; import java.util.Date; public class Sample1 { public void func() { Date d = new Date(); if ((d.getTime() % 2) == 0) { System.out.println("true"); } else { System.out.println("false"); } } } クラス2 package sample; import junit.framework.TestCase; public class Sample1Test extends TestCase { public void testFunc() { Sample1 s = new Sample1(); s.func(); } } build.xml(文字数の関係でコンパイルに関係ない箇所は省きました) <?xml version="1.0" encoding="Shift_JIS"?> <project name="javahelloant" default="clean" basedir="./"> <!-- プロパティ 開始 --> <!-- libがあるディレクトリ --> <property name="lib.dir" value="lib"/> <!-- ソースファイルがあるディレクトリ --> <property name="src.dir" value="src"/> <property name="test.dir" value="test"/> <!-- クラスファイルの出力先ディレクトリ --> <property name="classes.dir" value="bin"/> <property name="classes-test.dir" value="bin-test"/> <!-- プロパティ 終了 --> <!-- パス 開始 --> <path id="classpath"> <fileset dir="${lib.dir}"> <include name="**/*.jar" /> </fileset> <pathelement location="${classes.dir}"/> </path> <!-- パス 終了 --> <!-- ターゲット 開始 --> <!-- コンパイル --> <target name="compile"> <javac srcdir="${src.dir}" destdir="${classes.dir}" /> <javac srcdir="${test.dir}" destdir="${classes-test.dir}" classpathref="classpath" /> </target> </project>

    • ベストアンサー
    • Java
  • Antでのビルドにエラー

    いつも参考にさせて頂いています。 表題の件ですが、現在Eclipse3.1・struts1.2.9を使用しています。 Antでのコンパイルをしてみたのですが、コンパイルエラーになります。 ■エラー内容 シンボルを解決できません。 [javac] シンボル: クラス LookupDispatchAction LookupDispatchActionを継承しているクラスでは確かにインポートしています。(インポートしていないとエラーになると思うのですが、ソース上でエラーは出ていません) ■build.xmlの中身 <?xml version="1.0" encoding="UTF-8" ?> <project name="aaa" default="compile" basedir="."> <property name="srcdir" value="JAR" /> <!-- JARディレクトリの作成--> <target name="mkdir"> <mkdir dir="${srcdir}" /> </target> <!-- コンパイル --> <target name="compile" depends="mkdir"> <javac srcdir="javaSource" destdir="${srcdir}" excludes="build.xml" /> </target> </project> 何かbuild.xml上でstrutsライブラリのパスとかを指定しないと認識してくれないのでしょうか? どうかご教授宜しくお願いします。

    • ベストアンサー
    • Java
  • コンパイルエラー

    int m_nTypeCounter=0; と定義した変数を使い if((pDoc->m_sRomaji).GetAt(&m_nTypeCounter)==m_sStr) { m_sAnser += m_sStr; m_nTypeCounter++; } とした際、コンパイルエラーが 『C:\project\2008年課題\コピー ~ 問題・時計領域のみ再描画tokeidouga\ProgramView.cpp(536) : error C2664: 'GetAt' : 1 番目の引数を 'int *' から 'int' に変換できません。 (新しい機能 ; ヘルプを参照)』 この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。』 と表示されます。 どうしたら良いのでしょうか。 よろしくお願いします。

  • _beginthreadにて発生するコンパイルエラーについて

    過去に近い質問が出ていましたが、探しているような回答が見つからなかったので質問させていただきます。 プログラム作成の過程で_beginthreadを使うことになったのですが、以下のエラーメッセージが表示されます。 error C2664: '_beginthread' : 1 番目の引数を 'void (unsigned long)' から 'void (__cdecl *)(void *)' に変換できません。 (新しい機能 ; ヘルプを参照) スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません 調べた限りC++で作成している為Cでコンパイルされた関数を呼び出す為にC++で指示する必要がある、という事は理解できたのですが、いまいち修正の方法が判りません。 下記に関連部分ソースの一部と開発環境を記載します。 どなたかご教授の方よろしくお願いいたします。 開発環境:Visual C++6.0 プロジェクトの設定でランタイムライブラリはマルチスレッドに設定済み。 WINAPIとして作成、指定URLに接続するためのスレッドを作成したい -------------------グローバル一部--------------- DWORD cthread=0; //グローバルで宣言している addurl[1]; -----------問題の処理WndProc内部(メイン部)--------- addurl[0]=url; //編集したアドレスを貼り付け cthread=_beginthread(OpenURL,0,0); //ここでエラー -----------送る先(OpenURL)------------- void __cdecl OpenURL(DWORD index) { BASS_StreamFree(chan); // close old stream SendMessage(Edit,WM_SETTEXT,0,"connecting..."); if (!(chan=BASS_StreamCreateURL(addurl[index],0,BASS_STREAM_META|BASS_STREAM_STATUS,StatusProc,0))) { SendMessage(Edit,WM_SETTEXT,0,"not playing"); Error("Can't play the stream"); --------------以下省略---------------

  • リリースビルドの作成

    VisualC++ 2005 Express Editionを使って、C言語の簡単なプログラムを作りました。コンパイルの際に出てくるエラーや警告は一切ない(デバッグモード、リリースモード両方)のですが、このリリースビルドをVC++をインストールしていないPCで実行しようとすると、「指定されたプログラムは実行できません。」と出て実行できません。コンパイルに使ったPCでは実行できます。 リリースビルドを作成の際、ツールバーにある"Debug"を"Release"に切り替えて、ソリューションをビルドしました。プロジェクトはWin32コンソールにして、空のプロジェクトから始めました。 なぜ、バイナリが実行できないのでしょうか? そもそも、リリースビルドの作成法はこれでいいのでしょうか?

  • ポインタへの値の代入時の警告の原因

    私は現在、事務職をやっており、プログラミングとは全く別の畑に居ます。 真剣に転職を考えておりC言語を独学にて勉強中なのですが、ポインタの勉強中、どうしても理解できない点がありましたので質問いたしました。 ポインタを理解するために下記1~3のような処理をさせました。 1.文字変数s に 'a' を代入 2.ポインタp を宣言し、変数s のアドレスを代入 3.最終的にpの値を確認する。 #include<stdio.h> int main (void) { char  s; char  *p; s = ' a '; p = & s;        //←ここが9行目です printf (" pは %c です\n " , *p); return 0; } すると、 『 pは a です 』 と、期待通りの表示がされました。 次に、9行目を *p = s と書き換えた所、コンパイル時に 『値が割り当てられていないローカルな変数’p’に対して参照が行われました』 と言う警告が表示されました。 実行してみた所、 『pは a です』 と、結果は期待通りのものが表示されたのですが、この警告がなぜ表示されたのかが分かりません。 参考書を読んでも、このような(*p = sのような)書き方は載ってましたし、私自身、『「ポインタ変数pの値*p」に「変数sの値」を代入した。』と認識している為、間違いでは無いと考えております。 この警告がなされた原因について、どなたかご存知でしたら、宜しくお願いいたします。

専門家に質問してみよう