我使用C++/CLI链接一个.NET应用程序和一个动态加载的C DLL。LNK2020当做一个可变的静态
到目前为止,对DLL的所有访问都是基于实例的。
类
namespace NxCore {
public class NativeConnector {
具有用于各种参考文献的方法变量:
HMODULE hLib;
NxCoreProcessTape pfNxProcessTape;
NxCorePriceToDouble pfNxPriceToDouble;
NxCoreGetDefinedString pfNxCoreGetDefinedString;
NxCoreGetSymbolAtom32 pfNxGetSymbolAtom32;
NxCoreStateGetMMQuotes pfNxStateGetMmQuotes;
予加载这些在一个连接方法:
hLib = ::LoadLibrary("NxCoreAPI.dll");
然后
pfNxProcessTape = (NxCoreProcessTape)::GetProcAddress(hLib, cszNxCoreProcessTape);
pfNxPriceToDouble = (NxCorePriceToDouble)::GetProcAddress(hLib, cszNxCorePriceToDouble);
pfNxCoreGetDefinedString = (NxCoreGetDefinedString)::GetProcAddress(hLib, cszNxCoreGetDefinedString);
等
现在我需要将它移动到多个实例,所以我想加载第一次连接,在上次断开连接时卸载。这意味着变量必须是静态的。
在C#中,我只是让它们变成静态的。我尝试之一:
static HMODULE hLib;
和链接失败:
4> NativeConnector.obj:错误LNK2020:无法解析令牌(0A00006D) “私家车:静态结构HINSTANCE__ * NxCore :: NativeConnector :: HLIB”(? hLib @ NativeConnector @ NxCore @ Connectivity @ Tradex @@ 0PAUHINSTANCE __ @@ A)
任何想法如何解决它?头文件用于.cpp文件,因此 - 它不应该有不同的定义。
任何人都可以告诉他如何解决这个问题?正如我所说 - 我想要将变量设置为静态,然后使用“使用计数”来确保我在上次断开连接时释放。
*你定义了静态成员吗? – 2012-01-31 19:45:46
正如我所说 - 我在头文件中添加了一个“静态”。还有其他地方我必须定义它们吗?如果头文件(类定义)不是静态的,它就可以工作。 – TomTom 2012-01-31 20:31:12