-1

を返すエクスポートされた関数があるC++共有ライブラリを使用できますか?std::vector<t>

4

2 に答える 2

4

はい、DLLとそれを使用するC++コードを提供しました

  • 同じC++コンパイラを使用して構築されています
  • 同じバージョンのSTLを使用している(これはSTLデバッグ定義にも影響を受ける可能性があります)
  • 同じ共有ランタイムライブラリ(つまり、共有、デバッグとリリース、シングルスレッドとマルチスレッド、同じバージョン)を使用しているため、同じメモリヒープ上でオブジェクトの割り当てと解放の両方が行われます。

その後、正常に動作するはずです。これらのいくつかには少し余裕があるかもしれませんが、一般的には安全であり、可能であればすべてを同一に保つ方が良いです。

于 2012-04-20T11:49:15.020 に答える
1

が不明なタイプの場合std::vector<t>tつまり、template固定テンプレートのインスタンス化ではなく、共有ライブラリにを保存する場合、答えは「いいえ」です。

t共有ライブラリに型を挿入する方法が必要ですが、そうではありません。

コード用語で:

// This is NOT possible:
template <typename T>
std::vector<T> something () {...}

// This IS:
std::vector<int> something () {...}
于 2012-04-20T13:49:34.900 に答える