問題タブ [mixed-mode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - CGIとWPF用の混合C++とC++/CLIの開発
これはこの質問に関連していますが、答えの方向性を考えると、この質問を個別に行う方がよいと思いました。
CGI(長い話、ため息)で使用でき、C#で参照できるクラスライブラリを開発する必要があります。両方のデプロイメントを同時に更新できる必要があるため、CLI/ネイティブc++の相互作用を機能させる方法を理解するのに多くの問題があります。
サーバーの展開環境を制御できないため、サーバーの展開環境に公開されるすべてのコードはネイティブである必要がありますが、これはWPFでは機能しません。関連する質問のように、私は正しい方向に私を向けるために、私のために私の仕事をしてくれる人を探していません。
COM相互運用機能を調べましたが、明確で単純な例が見つかりません。
visual-studio-2010 - vs2010 でのネイティブ/混合モードの dll リンク エラー
ネイティブ コードが .NET コードと対話する方法を理解しようとしており、基本的にこのトピックへの回答の例を実装しようとしています。サンプル コードには 2 つの部分があり、1 つは /clr オプションでコンパイルされた .dll に入ります。
この関数を呼び出すコードは、ネイティブにコンパイルされた win32 アプリケーションに入ります。
ただし、vs2010 では次のリンカ エラーが発生します。
エラー LNK2019: 未解決の外部シンボル "bool __cdecl toUpper(void)" (?toUpper@@YA_NXZ) が関数 _wmain で参照されています
dll プロジェクトの /clr オプションをオフにするとすぐに、すべてが機能するので、プロジェクト間のすべての依存関係が正しく設定されていると想定します。私が間違ったことについて何か提案はありますか?
exception - gcroot には値がありません
アンマネージ コード内のマネージ オブジェクトに奇妙な問題があります。C++ と C# コードを橋渡しするこの C++/CLI モジュールがあります。私はこのような構造を持っています:
ここで、ある時点で、このマネージド参照のインスタンスを作成し、addonHost を設定します。無事、ハンドルも使えるようになりました。
ただし、場合によっては (多くの文脈上の説明が必要になるのではないかと思います)、値を評価できません。
この場合、addonHost を指定してメソッドを呼び出すと、「Entry point for found」例外が発生します。
スクリーンショットからわかるように、2 つの異なるインスタンス、2 つの異なるハンドルではありません。まったく同じです。「値」が評価されない状況がどのように発生するのかわかりません。そして、どうやってそれを捕まえたのかもしれません。nullではないからです。
私が言及しなければならないことは、私はいくつか持っていてgcroot<T>
、すべてがこの問題を抱えているということですgcroot<System::String>
。
アップデート
実行中にデバッガーが表示するものを次に示します。オブジェクトが作成されて利用可能になり、ある時点で値が「消失」し、次の呼び出しではまだ存在しています。しかし、これは非常に再現性があります。ランダムではありません。
.net - アセンブリの境界を越えてマネージ C++/CLI 型をアンマネージ型に変換する
既存のアンマネージ C++ ライブラリをラップする C++/CLI を書いていると、マネージ型からアンマネージ型への変換の問題が発生しました。これの簡単な例は、std::string を System::String に変換することですが、原則は多くの型、つまり配列 -> ベクトルに適用されます。いくつかの変換関数を作成したので、それらを再利用できるようにアセンブリにパッケージ化することにしました。グローバル C++/CLI 関数が現在のアセンブリの外では見えないことを考えると、私はこのようなものになりました
これは問題なく準拠していますが、convert 関数は署名でアンマネージ型を使用しているため、アセンブリの外部で公開されません。こちらを参照してください。詳細については、 100%29.aspxを参照してください。解決策は通常追加することです
ファイルに追加し、他の状況では問題なくこれを実行しました。ただし、make_public は std::string のようなテンプレート化されたクラスでは機能しません。詳細については、 http://msdn.microsoft.com/en-us/library/ms235343%28v=vs.80%29.aspxを参照してください。
たとえば、いくつかの回避策を見つけましたが、それらはすべてかなり醜いようでした。
結局のところ、私の質問は、ここで明らかな何かが欠けているのでしょうか? マネージド型からアンマネージド型への変換、特にコンテナー クラス、つまり STL.NET <--> Unmanged STL のようなものは一般的な問題になると思われますが、多くの検索を行った後、このトピックについてはあまり見つかりませんでした。
string - StringToHGlobalAnsi を使用して関数内で System::String を char* に変換する
System::String^
CLI ラッパーで からへの多くの変換が必要で、関数を作成しましたが、 !char*
を返す前にヒープ領域を解放できません。char*
(時間の経過とともにヒープエラーを取得します)
変換
私は次のような関数を使用します:
何か案は?!
visual-studio - C++/CLI (混合モード) プロジェクトのデバッグ中に Visual Studio 2010 がハングする
問題を Google で調べたところ、既に報告されていることがわかりましたが、MS からはまだ役に立たないことがわかりました。誰かがそれを回避する方法を見つけたのだろうか?
windows-ce - Windows CE / Compact Framework の混合モード
Compact Framework (バージョン > 2.0) がインストールされた Windows CE (バージョン 6.0) 用の混合モード アプリケーション/DLL を作成する方法はありますか? ソースコードは C++ で書かれています。私が成功したのは、C# に基づく純粋な .NET アプリケーションの構築だけでした。Visual Studio (2005) を使用してコマンド ラインに /CLR を追加すると、「cl : コマンド ライン警告 D9002 : 不明なオプション '/CLR' を無視しています」という警告が表示されます。
事前にすべてのヒントをありがとう
strongname - 私の人生では、混合モードDLLに強い名前を付けることはできません
混合モードのdllがあります。有効な*.snkファイルを指すようにLinker\Advance \KeyFileを設定しました。しかし、dllは厳密な名前ではありません。
これはsnで確認できます。「強力な名前付きアセンブリを表していない」と応答します。
ここにも同様の投稿があり、署名の遅延について言及されていました。私はこれを無駄に試しました。
どんな助けでも大歓迎です!
.net - 管理対象オブジェクトをネイティブ関数に送信して使用するにはどうすればよいですか?
管理対象オブジェクトをネイティブ関数に送信して使用するにはどうすればよいですか?
sql-server - 新しいSQLServerは、Windows認証を許可しない混合モード認証をインストールします
SQL Server 2008 RSStandardEditionの新しいインスタンスがあります。混合モード認証を有効にしましたが、Windows認証を機能させることができません。エラー:18456、ユーザー'MyDomain\jreddy'のログインに失敗しました。saアカウントでログインできるので変更できますが、何を変更すればよいかわかりません。どんな助けでも大歓迎です。
イベントログを確認したところ、ログインの失敗に関連する次のエラーが見つかりました。
理由:トークンベースのサーバーアクセス検証がインフラストラクチャエラーで失敗しました。