请教各位关于DLL的问题!(有用提示追加100分)

来源:百度知道 编辑:UC知道 时间:2024/06/28 17:41:11
分给的不高,因为没满意答案的话分就浪费了,所以有给出有用提示的朋友我至少追加100分!!

我现在用VS2005写一个DLL,Use MFC in a Static Library。这个DLL的导出函数就一个,我直接写在DEF文件里了。
在DLL内部编程时我需要调用第三方的SDK,第三方提供我.dll,.lib,.h文件,我现在已经把.h文件包含了,.lib也放到工程目录下了,
在:Project Property->Linker->Input下的Additional Dependencies里填入:fxmsg.lib fix.lib(这两个就是第3方SDK给我的LIB)
在Ignore Specific Library中填入:/NODEFAULTLIB:libcmtd.lib,libc.lib,libcmt.lib,msvcrt.lib,libcd.lib,msvcrtd.lib

这样我在/MTD的DEBUG模式下编译,还是出现LINK错误:
Error 45 error LNK2019: unresolved external symbol __imp__strncpy referenced in function "protected: static double __cdecl CUTCTimestamp::parse(char const *)" (?parse@CUTCTimestamp@@KANPBD@Z) d:\Project-FXCM\DSFXCM\DSFXCM\fix.lib 1

CUTCTimestamp是第3方的一个基类,我程序里直接拿来创建对象的类是这个基类的子类CUTCTimeOnly,究竟错在哪里呢???

附上CUTCTimeOnly类的声明:
#ifndef _fixexp_
#ifdef FXFIX_EXPORTS
#define _fixexp_ __declspec(dllexport)
#else
#ifdef FXFIX_IMPORT

很简单:

strncpy 函数没有找到,运行时库没有被连接

你执行的:
“在Ignore Specific Library中填入:/NODEFAULTLIB:libcmtd.lib,libc.lib,libcmt.lib,msvcrt.lib,libcd.lib,msvcrtd.lib ”导致的。

lib*.lib是静态库的lib。
如果是debug版本的,就是lib*d.lib,这个不能忽略。具体的你看MSDN上对运行时库的描述,通过 strncpy 的帮助能链接到

(另外,同时还要考虑第三方dll的对运行时库的链接方式——一般情况下,都是动态链接的。故,建议你的DLL也动态链接到MFC运行时库的方式,这样虽然安装时候需要的文件多,但是兼容性好)。

——给分吧,兑现承诺噢,100分...

你的lib库添加的正确吗,debug和release编译环境下都添加了吗。

你这样试试吧,不要项目的属性里设置,在代码里直接添加吧:

#pragma comment(lib, "fxmsg.lib")
#pragma comment(lib, "fix.lib")

哎!!加了我的QQ我一步一步地你可以了吧,873539803 什么也别说了,