VS 2022を起動して準同型検定CSを開く

VS 2022を起動して準同型検定CSを開いてみた.以下のようなエラーが大量に出ている.I:\Visual Studio 2022\Web\Snippets\HTML\1041\ASP.NET\gridview.snippet: 言語の属性がないか、または無効です。

スニペットというのは,エディット中に表示されるヒントのようなものと思われるので,多分ビルドには直接影響しないのではないかと思う.⇒ビルドしてみたが,例のエラーが再発している.

重大度レベル    コード    説明    プロジェクト    ファイル    行    抑制状態 エラー    C1189    #error:  “This library now requires a C++11 or later compiler – this message was generated as a result of BOOST_NO_CXX11_REF_QUALIFIERS being set” ElsieProject C:\Users\babalabo\vcpkg\installed\x86-windows\include \boost\multiprecision\detail\check_cpp11_config.hpp 34   

ネット情報によると,boost のバージョンを戻すと解消するようなことが書いてあったのだが… どうも厄介なものを背負い込んでしまったようだ.boost を使うために vcpkg などというよく分からないものまで導入しているのだが… C#ではBigIntegerが使えるので,ELSIEをまるごとC#をに移植するという方が正解だったかも… ⇒この障害は準同型検定CS 2023-09-19-1から始まっている.とりあえず,準同型検定CS 2023-09-19まで戻ってみよう.2023/09/19のログのタイトルは「C#からC++の関数を呼び出すサンプル」だ.ともかくここにラッパクラスのプロジェクトを導入してみよう.

D8016 コマンドラインオプション /ZIと/GLは同時に指定できません.⇒デバッグライブラリの使用とUnity(JUMBO)ビルドを有効をオフにして解消した.⇒いや,解消していない.「

/ZIプロジェクトのプロパティの[C/C++]→[全般]のデバッグ情報で「エディット コンティニュのプログラム データベース(/ZI)」で指定します。/GLは同じく[C/C++]→[最適化]のプログラム全体の最適化で「はい(/GL)」で指定します。この二つはデフォルトでプロジェクトを作成すると同時に指定される事はないはずですが、変更しましたか?
Debugモードならばプログラム全体の最適化は指定されてないはずです。またReleaseモードでは、デバッグ情報の形式は「プログラム データベース(/Zi)」になっているはずです。」ということのようだ.⇒デバッグモードでC/C++→全般→デバッグ情報の形式→なしとして解消.

LNK200 未解決の外部参照が3件出た.calloc_dbg, CrtDFbgReport, invalid_parameter.⇒構成プロパティ→詳細→デバッグライブラリの使用→はいで解消した.

警告:LINK : warning LNK4075: /INCREMENTAL は /LTCG の指定によって無視されます。リンカー→全般→インクリメンタルリンクを有効にする→いいえで解消した.

ソリューションにCLR クラスライブラリ(.NET)タイプの新しいプロジェクトを追加して,ElsieProjectとする.さらに,プロジェクトの依存関係を設定.準同型検定CS→参照→参照の追加→プロジェクト→ElsieProjectにチェックを入れる.⇒構成マネージャ→アクティブソリューション構成→準同型検定CS→プラットフォーム→Any CPUを新しいプラットフォーム→x86に切り替え.C#プロジェクト出力先の変更:プロパティ→ビルド→出力パスをbin\x86\Debug\→..\Debug\,bin\x86\Release\→..\Release\ に変更.C++の出力先と一致させる.PsiNumber.hに以下の行を追加.

#ifdef NATIVEFUNC_EXPORTS #define NATIVEFUNC_API __declspec(dllexport) #else #define NATIVEFUNC_API __declspec(dllimport) #endif namespace Native { // num個のint配列srcから、最大値とそのインデックスを探す関数です NATIVEFUNC_API void Max(int* src, int num, int* mx, int* mxIndex); }

C++側のビルドは通ったが,ソリューションのビルドで警告が大量発生.“Microsoft.CSharp” の異なるバージョン間で、解決できない競合が見つかりました。C# V4.0とV5.0が競合している.System.Net.Http” の異なるバージョン間で、解決できない競合が見つかりました。という警告も出ている.⇒ツール→NuGetパッケージマネージャ→パッケージマネージャコンソールでUpdate-Package -reinstall コマンドを実行して解消したようだ.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA