C++ cli LNK2020在进行变量静态测试时

C++ cli LNK2020在进行变量静态测试时,c++-cli,C++ Cli,我使用C++/CLI在.NET应用程序和动态加载的C dll之间进行链接 到目前为止,对DLL的所有访问都是基于实例的 班级 namespace NxCore { public class NativeConnector { 具有用于各种方法引用的变量: HMODULE hLib; NxCoreProcessTape pfNxProcessTape; NxCorePriceToDouble pfNxPriceToDouble;

我使用C++/CLI在.NET应用程序和动态加载的C dll之间进行链接

到目前为止,对DLL的所有访问都是基于实例的

班级

namespace NxCore {
    public class NativeConnector {
具有用于各种方法引用的变量:

        HMODULE hLib;
        NxCoreProcessTape pfNxProcessTape;
        NxCorePriceToDouble pfNxPriceToDouble;
        NxCoreGetDefinedString pfNxCoreGetDefinedString;
        NxCoreGetSymbolAtom32 pfNxGetSymbolAtom32;
        NxCoreStateGetMMQuotes pfNxStateGetMmQuotes;
我在连接方法中加载它们:

    hLib = ::LoadLibrary("NxCoreAPI.dll");
然后

等等

现在我需要将其移动到多实例,所以我希望在第一次连接时加载,在最后一次断开连接时卸载。这意味着变量必须是静态的

在C#中,我只会将它们设置为静态。我试了一个:

    static HMODULE hLib;
而链接失败:

4> NativeConnector.obj:错误LNK2020:未解析的令牌(0A00006D)“私有:静态结构HINSTANCE\uuu*NxCore::NativeConnector::hLib”(?hLib@NativeConnector@NxCore@Connectivity@Tradex@@0PAUHINSTANCE\uuUa)

有人知道怎么修吗?头文件用于.cpp文件,因此-它不应有不同的定义


谁能告诉他如何解决这个问题?正如我所说的,我想把变量移到静态,然后用“使用计数”来确保我在上次断线时释放。

< P>从代码中看,我不清楚问题发生在REF类(.NET类)还是原生C++类中。 下面是我的建议,假设为本机类型:您需要定义声明的成员

  • 标题

    struct X
    {
        static int s_data;
    };
    
  • cpp资料来源:

    #include "X.h"
    
    int X::s_data /* = 42 */;
    

<>对于REF类型,我实际上期望与C一样的静态语义,如C</p>< P>。从代码中我不清楚问题是在REF类(.NET类)还是本地C++类中发生的。 下面是我的建议,假设为本机类型:您需要定义声明的成员

  • 标题

    struct X
    {
        static int s_data;
    };
    
  • cpp资料来源:

    #include "X.h"
    
    int X::s_data /* = 42 */;
    
对于ref类型,我实际上希望static的语义与C#

相同。您是否定义了static成员?正如我所说,我在头文件中添加了一个“static”。还有什么地方需要我定义吗?如果头文件(类定义)没有将它们设置为静态,它就可以工作。您定义了静态成员吗?正如我所说的,我在头文件中添加了一个“static”。还有什么地方需要我定义吗?如果头文件(类定义)不将它们视为静态文件,则它可以工作。