Visual studio 2010 错误C3861:在DLL中找不到函数的标识符,但找到了其他函数。 我是VisualC++的新手,我正在尝试使用另一个VisualStudio解决方案生成的DLL。

Visual studio 2010 错误C3861:在DLL中找不到函数的标识符,但找到了其他函数。 我是VisualC++的新手,我正在尝试使用另一个VisualStudio解决方案生成的DLL。,visual-studio-2010,visual-c++,dll,c++-cli,clr,Visual Studio 2010,Visual C++,Dll,C++ Cli,Clr,在我的新解决方案中,DLL中的一个函数工作得非常好,但另一个函数给出了一个错误,即错误C3861:找不到标识符 DLL的头文件如下所示: #ifdef CONVERTLIBRARY_EXPORTS #define CONVERTLIBRARY_API __declspec(dllexport) #include "../Convert/Parse.h" #include "../Convert/TxI16Types.h" #include "../Convert/messages.h" #e

在我的新解决方案中,DLL中的一个函数工作得非常好,但另一个函数给出了一个错误,即错误C3861:找不到标识符

DLL的头文件如下所示:

#ifdef CONVERTLIBRARY_EXPORTS
#define CONVERTLIBRARY_API __declspec(dllexport)

#include "../Convert/Parse.h"
#include "../Convert/TxI16Types.h"
#include "../Convert/messages.h"

#else
#define CONVERTLIBRARY_API __declspec(dllimport)

#include "Parse.h"
#include "TxI16Types.h"
#include "messages.h"

#endif



extern CONVERTLIBRARY_API long nConvertLibrary;

CONVERTLIBRARY_API int fnConvertLibrary(void);

CONVERTLIBRARY_API int fslParseByte(unsigned char inchr, struct ParseState *ps, unsigned char *outbuf, int outsize);
CONVERTLIBRARY_API int fslCheckMessage(unsigned char* buf, struct ParseState *ps);
CONVERTLIBRARY_API int fslBinaryToAscii(const unsigned char* hdr, char *out, unsigned int outlen, int *error);
CONVERTLIBRARY_API int fslAsciiToBinary(const char* hdr, unsigned char *out, unsigned int outlen, int *error);
我已经指定了.lib文件的路径,这必须是正确的,因为我可以调用函数fslParseByte,但是调用fslAsciiToBinary或fslBinaryToAscii会导致错误


我不确定这是怎么可能的,如果有任何建议,我将不胜感激

这是一个编译器错误,而不是链接器错误,因此.lib文件不相关。Occam的剃须刀说你包含了错误的文件,一个旧文件。您现在使用的include指令很奇怪,请不要这样做。当然是什么让你陷入麻烦,你一直在复制.h文件以使编译器满意,现在你有了不同版本的文件。正确的方法是,对于具有Project+属性、C/C++、General和附加Include Directory设置的客户机项目,只有一个位置存储.h文件,并将其告知编译器。链接器也有一个用于.lib文件的链接器。在还原我所有的更改并从一个地方添加标题之后,构建工作得很好。