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