已知dll里面有一个函数的原型是
procedure SetThread( Handle: THandle; NumTimes: Word)现在我用extern "C" void __stdcall SetThread(unsigned long,unsigned short);做声明但是去调用SetThread()的时候发生了link2001错误
error LNK2001: unresolved external symbol _SetThread@8看来是vc++把我的函数声明中的参数大小当成8了
实际的参数大小应该是6请问怎么解决这个问题?
procedure SetThread( Handle: THandle; NumTimes: Word)现在我用extern "C" void __stdcall SetThread(unsigned long,unsigned short);做声明但是去调用SetThread()的时候发生了link2001错误
error LNK2001: unresolved external symbol _SetThread@8看来是vc++把我的函数声明中的参数大小当成8了
实际的参数大小应该是6请问怎么解决这个问题?
采用Loadlibrary与Getprocaddress吧。
是用vckbase上的方法用def文件生成的lib
已知dll里面的函数原形是procedure SetThread( Handle: THandle; NumTimes: Word)然后我自己写的.h文件,其中这个函数被声明为extern "C" void __stdcall SetThread(unsigned long,unsigned short);到我实际调用这个函数的时候,它把实参的总长度当成8了,本来应该是4+2=6才对啊
所以发生link错误,提示说找不到函数 _SetThread@8,因为lib里面函数符号中的参数大小是6这种情况该怎么办?
PROCSETTHREAD *pSetThread =
(PROCSETTHREAD *)GetProcAddress(hHandle, "SetThread");
(*pSetThread)(..., ...)
...
FreeLibrary(hHandle);^_^ 参考 <VC 技术内幕5> Page.511
可以吗?
是不是一定要动态调用?