2
A
答えて
1
、C++/CLIが明示的にこのシナリオをサポートするために作成されました。開始するには、CLRノードからプロジェクトテンプレートを選択するだけです。リンカーに.libファイルをリンクし、C++/CLIのソースコードにヘッダを#includeするように指示する必要があります。
#includeヘッダーには、C++/CLIコンパイラが誤って解釈できる宣言が含まれている可能性があります。 C関数の宣言などがあります。コンパイラに明示的に伝えることが最善のことです。このように:
#include "stdafx.h"
#pragma managed(push, off)
#include "3rdparty.h"
#pragma managed(pop)
#pragma comment(lib, "3rdparty.lib")
// Rest of your code
そのスニペット内の#pragmaコメントも、サードパーティのライブラリの.LIBファイルをリンクするようにリンカーに指示します。リンカの[追加の依存関係]設定で明示的に行う必要がなくなります。
それだけです。
2
このような標準が存在するかどうかわかりませんが、C++アプリケーションと同様にC++/CLIアプリケーション内でC++ライブラリを使用できます。 私が常にやろうとしているのは、クライアントが常にマネージクラスで動作するように、3番目のライブラリをProxyまたはFacadeのデザインパターンで囲むことです。 これは、C++/CLIアプリケーションが他の.NETアプリケーションで使用されるライブラリである場合に特に重要です。
例:それにはほとんどあります
// 3rd party header
class Value{};
// your C++/CLI app
#include <3rdpaty/Value.h>
public ref class ValueWrapper
{
public:
// wrapper interface here
private:
std::scoped_ptr<Value> value_;
};
関連する問題
- 1. 2-組み合わせC++
- 2. C# - Parallel.ForEachとAsyncの組み合わせ
- 3. C++の円の組み合わせ
- 4. Python itertoolsの組み合わせの組み合わせ
- 5. C++:デフォルトパラメータの組み合わせ
- 6. C#配列の組み合わせ
- 7. データウェアハウス:冗長な組み合わせの組み合わせ
- 8. C#とLinqの組み合わせでLinqクエリを組み合わせた場合
- 9. 配列と組み合わせパターンの組み合わせを見つける
- 10. CUDA 9とGCC4.3のコンパイル済みC++ソフトウェアの組み合わせ
- 11. ReactとReduxとの組み合わせ
- 12. の組み合わせR
- 13. ワイアードの組み合わせ
- 14. Pythonの組み合わせ
- 15. の組み合わせR
- 16. メディアクエリステートメントの組み合わせ
- 17. DataFrameの組み合わせ
- 18. ロックの組み合わせ
- 19. C++でスタティック初期化をObjective-Cと組み合わせた
- 20. 異なるコントロールタイプ(チェックボックスとテキストボックス)を組み合わせて同時にC#で組み合わせる方法
- 21. ListActivityとActionBarActivityの組み合わせ
- 22. XSL:グルーピングとコールテンプレートの組み合わせ
- 23. Glade XMLとHeaderBarの組み合わせ
- 24. wcfとknockout.jsの組み合わせ
- 25. selectとmutateの組み合わせ
- 26. xargsパラレルとmpirunの組み合わせ
- 27. OAuthとCASの組み合わせ
- 28. ISupportInCrementalLoadingとVariableSizedWrapGridの組み合わせ
- 29. JQueryオートコンプリートとAJAXの組み合わせ
- 30. キャッチオールRewriteRuleとPhysicalFileSystemの組み合わせ
管理対象クラスのメンバとしてアンマネージ値型を使用できないため、コンパイルされません。 – stijn
常に、値への前方宣言および不透明ポインタを使用できます。これは完全にコンパイルして動作します。 – nogard
これは私が数ヶ月前に私のインタフェイスをした方法です。 – Max