Mesoscopic Programming

タコさんプログラミング専門

DLLで文字列定数を使うときの注意点

たぶんだけど、DLLで作ったクラス内で文字列定数をインラインで使用することはできない。
ていうかたぶん、ポインタを使うことはできないのではないのか。
それはたぶん、DLLだから実際にリンクされるまでアドレスが決定しないからなんだろね。

たとえば

class TClass
{
private :
    static const char * m_str1;
    const char        * m_str2;
public :
    inline TClass() : m_str2( m_str1 ) {}
};
const char * TClass::m_str1 = "String";

これだとリンクエラーになるのだが、これを

class TClass
{
private :
    static const char * m_str1;
    const char        * m_str2;
public :
    TClass();
};
const char * TClass::m_str1 = "String";
TClass::TClass() : m_str2( m_str1 ) {}

これだとエラーにならないのだ。