リンクポリシーはC++のDLLとC++クラスライブラリDLL
-
25-09-2019 - |
質問
ご質問のような を生成c++.net wrapper.Step-by-step
私tring用のC++クラスです。当期純 私は、こうした困りのビルをVisual Studio(2008).
私はポクラス(C++コンパイ/clr).作成したC++/clrクラスクラス1"はラップとのマッチング の方法の代表団の方法。
場合を含むクラスのユニットのソースファイルのクラスライブラリ プロジェクトのためのクラス1(営)ほどの場所に位置してい 全てのリンクや、 しかし多くのユC++クラスのように、私tringたちに見てもらうとともに、 DLLおよびリンクするDLLの管理図書館(クラッパー).[かんする必要があるリンクはこれらのDLLのとここで、 そのコンパイラが必要で、同じ誤差を以下に示します。]
作成したVisualC++/CLR/クラスライブラリ よび添付のC++クラスライブラリ(下)。[使用したデフォルトの設定が プロジェクトのリンカー設定されたも 登録出力ありとあったらいいなと思いました。 誤りがないとゆったりとしています。DLLファイルが作成されます。
作成したVisualC++/CLR/クラスライブラリ のラッパークラス'Class1' 使用したすべてのデフォルトを設定します。下のプロジェクト特性をクリックしても'を参照''新しい基準" 選DLLを作成したオプションを付けてください。
を取得しまリンカーエラー:
test_NET_library.obj : error LNK2028: unresolved token (0A000009) "public: int __thiscall Z::A::m1(int,int)" (?m1@A@Z@@$$FQAEHHH@Z) referenced in function "public: int __clrcall test_NET_library::Class1::m1(int,int)" (?m1@Class1@test_NET_library@@$$FQ$AAMHHH@Z)
test_NET_library.obj : error LNK2028: unresolved token (0A00000A) "public: int __thiscall Z::A::m2(int,int)" (?m2@A@Z@@$$FQAEHHH@Z) referenced in function "public: int __clrcall test_NET_library::Class1::m2(int,int)" (?m2@Class1@test_NET_library@@$$FQ$AAMHHH@Z)
test_NET_library.obj : error LNK2019: unresolved external symbol "public: int __thiscall Z::A::m1(int,int)" (?m1@A@Z@@$$FQAEHHH@Z) referenced in function "public: int __clrcall test_NET_library::Class1::m1(int,int)" (?m1@Class1@test_NET_library@@$$FQ$AAMHHH@Z)
test_NET_library.obj : error LNK2019: unresolved external symbol "public: int __thiscall Z::A::m2(int,int)" (?m2@A@Z@@$$FQAEHHH@Z) referenced in function "public: int __clrcall test_NET_library::Class1::m2(int,int)" (?m2@Class1@test_NET_library@@$$FQ$AAMHHH@Z)
C:\temp\test_Cpp_CLI\test_NET_library\Debug\test_NET_library.dll : fatal error LNK1120: 4 unresolved externals
同じ誤差ているような気分になりましたの削除A.cpp のラッパークラス図書館プロジェクト(オプションで作品を表現)をする場です。いかに構築しようと決意外観の これはあくまでも図書館ではなく、プログラム。
あなたに追加する必要があり、ラッパークラス図書館プロジェクト特性 登録のDLLのポ授業又はコンパイラオプション?かも必要である。libファイルをDLL?(libファイルの表示は、プロジェクトに対象のディレクトリ)
しなければなりませんか。使__declspec(dllexport)日付をクリックしてくださいと考えただけのためのCスタイル機能 ないクラス会員とする。] としての質問: 輸出管の授業から、Visual C++のDLL? でも、ポC++図書館がコンパイルされてCLRを有効にします。
(やったもの作成と静的ライブラリだけを追加する方法を見つけ出すこと きます。libファイルのCLRクラス図書館プロジェクト)。
私の試験クラス
namespace Z
{
class A
{
public:
int m1(int p1, int p2);
int m2(int p3, int p4);
};
};
の実施:
#include "A.h"
namespace Z
{
int A::m1(int p1, int p2) { return p1+p2; };
int A::m2(int p3, int p4) { return p3 * p4; };
};
のラッパークラス
#pragma once
#include "../A.h"
using namespace System;
namespace test_NET_library {
public ref class Class1
{
private: Z::A *a;
public: Class1()
: a(new Z::A)
{}
public: inline int m1(int p1, int p2)
{ return a->m1(p1,p2);
};
public: inline int m2(int p3, int p4)
{return a->m2(p3,p4);
};
};
}
どの質問: C++/CLI混合モードのDLLを作成 また:
#pragma managed(push, off)
#include "../A.h"
#pragma managed(pop)
またこの押管理の周辺A.cpp.
更新:しmcdaveの対応に取り出して、その/clrこれは、DLL、現方法を教えて下さいこのDLLを私test_NET_library?
また参考文献/新規追加を参照し、選択したのはこの新たなDLL;からのメッセージ"な追加の参照ファイルC:..\unmanaged_lib.dll'でも分からない。純組立または登録ActiveXコントロールです。".DLLを追加したプロジェクトのファイルのリストが、コンパイラが無視します。
またの追加、既存の品目を選定した新DLL.たします。※DLLファイルを選択可能なファイルタイプです。
解決
の数のヒントから更新して二つの推測し...
- 時unmanaged_libは静的リンクライブラリが設定されていまunmanaged_libプロジェクト依存関係のtest_NET_library?(プロジェクトエクスプローラー画面を右クリックしtest_NET_libraryを選択し、"プロジェクトの依存..."を選択しunmanaged_lib.)
- 時unmanaged_libは、DLL、輸出のクラスからのDLLによる以下の この 回答とともに、test_NET_libraryのunmanaged_libます。