簡體   English   中英

C ++ | Windows-將STL對象傳遞給DLL

[英]C++ | Windows - Passing STL objects to DLL

我已經看到了一些很好的問題,但是我決定問自己一個問題,因為它們並不是我想知道的。

關於如何不應該將std :: string傳遞給函數(從DLL)進行了很多討論,因為所有內容都必須匹配CRT,平台版本等,但是您可以安全地將const * char傳遞給函數,然后在.dll內部使用std :: string的?

我問的原因是因為我最近發現C ++字符串非常有用,並且我想將它們與.DLL一起使用,但是由於運行時模板等原因,我發現它們與.dll一起使用是不安全的。

所以我的問題主要是,在.dll中是否有一種“安全”的方式來使用std :: string?

在內部使用它是完全安全的。

而且也不必擔心跨DLL邊界使用std::string 您不能在公共接口中使用它,但是當您將DLL與自己的程序一起交付時,您將控制雙方。 在一個VS解決方案中的兩個Visual Studio項目中同時具有DLL和EXE是很常見的。 這樣可以確保它們使用相同的平台版本構建。

隨時在DLL接口中使用std::string 但是您應確保DLL和應用程序必須使用相同的std庫構建,以避免std::string邊界問題。

沒有ABI記錄,因此從技術上講 ,它可以隨編譯器版本進行更改,並且可以取決於編譯器設置。

如果調用方和DLL是由同一版本的Visual C ++構建的,則應該放心。

但是,這意味着:您不能在公共接口中使用它,並且放棄了版本之間的兼容性(例如,在升級編譯器后,使用更新的DLL運行oder EXE)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM