
请教各位关于DLL的问题!(有用提示追加100分)
分给的不高,因为没满意答案的话分就浪费了,所以有给出有用提示的朋友我至少追加100分!!我现在用VS2005写一个DLL,UseMFCinaStaticLibrary。这...
分给的不高,因为没满意答案的话分就浪费了,所以有给出有用提示的朋友我至少追加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
#define _fixexp_ __declspec(dllimport)
#else
#define _fixexp_
#endif
#endif
#endif
class _fixexp_ CUTCTimeOnly : public CUTCTimestamp
{
public:
.....
} 展开
我现在用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
#define _fixexp_ __declspec(dllimport)
#else
#define _fixexp_
#endif
#endif
#endif
class _fixexp_ CUTCTimeOnly : public CUTCTimestamp
{
public:
.....
} 展开
3个回答
展开全部
很简单:
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分...
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")
你这样试试吧,不要项目的属性里设置,在代码里直接添加吧:
#pragma comment(lib, "fxmsg.lib")
#pragma comment(lib, "fix.lib")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哎!!加了我的QQ我一步一步地你可以了吧,873539803 什么也别说了,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询