C++ 将sf::Texture存储在dll中的静态变量中

C++ 将sf::Texture存储在dll中的静态变量中,c++,sfml,C++,Sfml,实际上,我使用dll将一些方法导出到非托管应用程序 我需要为sf::Texture创建一个静态变量,但是当我尝试时,dll没有正确初始化 我只是加上这一行: static Texture test3; 和dll停止。关于“静态”作为限定词的效果,这些在其他答案中有介绍。如果您想使用“static”,那么您应该知道“static”在做什么 我不知道您试图实现什么,但我认为您可能希望通过DLL中定义的函数访问该值 举例来说 source.cpp static Texture *myInterna

实际上,我使用dll将一些方法导出到非托管应用程序

我需要为sf::Texture创建一个静态变量,但是当我尝试时,dll没有正确初始化

我只是加上这一行:

static Texture test3;
和dll停止。

关于“静态”作为限定词的效果,这些在其他答案中有介绍。如果您想使用“static”,那么您应该知道“static”在做什么

我不知道您试图实现什么,但我认为您可能希望通过DLL中定义的函数访问该值

举例来说

source.cpp

static Texture *myInternalTexture;

void InitInternalTexture(){
    myInternalTexture = new Texture( blah);
}

Texture *GetInternalTexture(){
    return myInternalTexture;
}

void ReleaseInternalTexture(){
    delete myInternalTexture;
}
根据您的使用情况,您可能更喜欢访问纹理的引用或进行复制,我不知道您需要做什么。如果你可以很容易地修改上面的代码来处理你的纹理类型。

关于“静态”作为限定词的效果,这些都在其他答案中介绍。如果您想使用“static”,那么您应该知道“static”在做什么

我不知道您试图实现什么,但我认为您可能希望通过DLL中定义的函数访问该值

举例来说

source.cpp

static Texture *myInternalTexture;

void InitInternalTexture(){
    myInternalTexture = new Texture( blah);
}

Texture *GetInternalTexture(){
    return myInternalTexture;
}

void ReleaseInternalTexture(){
    delete myInternalTexture;
}

根据您的使用情况,您可能更喜欢访问纹理的引用或进行复制,我不知道您需要做什么。以防您可以轻松地修改上面的代码以处理您的纹理类型。

不清楚DLL停止的含义。你有没有受到严重的撞击?你链接失败了吗?编译器会抱怨注释吗?您的应用程序是否在一个非常精确的点上崩溃?(我认为使用纹理时会崩溃)不清楚DLL停止的含义。你有没有受到严重的撞击?你链接失败了吗?编译器会抱怨注释吗?您的应用程序是否在一个非常精确的点上崩溃?(我认为它在使用纹理时会崩溃)