gpt4 book ai didi

c - Visual c中的错误LNK2010,无法调用其他项目文件中的方法

转载 作者:行者123 更新时间:2023-12-04 05:58:01 26 4
gpt4 key购买 nike

error LNK2019: unresolved external symbol "char * __cdecl BytesToString(unsigned char const *,unsigned int)" (?BytesToString@@YAPADPBEI@Z) referenced in function _wmain C:\Users\anandada\Documents\Visual Studio 2010\Projects\ByteToString\ByteToString\ByteToString.obj ByteToString



以上是我得到的错误。代码如下所示。 ByteToString 是一个控制台 Win32 应用程序,而 Utility 是 Win32 DLL。

Utility.c


#include "stdafx.h"
#include "Utility.h"
#include "stdlib.h"

char* BytesToString( const unsigned char* PpcbBytes, const unsigned int PuiNoOfBytes)
{
unsigned char bRetVal = 0;
unsigned int ctr = 0;
char* PpszString = NULL;
int len=0;

do
{
PpszString=(char*)calloc(PuiNoOfBytes*3+1,sizeof(char));
if(NULL==PpszString)
break;
len=5;
} while(0);
return PpszString;
}

Utility.h


#ifndef _UTILITY_H
#define _UTILITY_H
__declspec(dllexport) char* BytesToString( const unsigned char* PpcbBytes, const unsigned int PuiNoOfBytes);
#endif

ByteToString.cpp


// ByteToString.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "string.h"
#include "stdlib.h"
#include "..\Utility\Utility.h"

int _tmain(int argc, _TCHAR* argv[])
{
unsigned char pbArray[5]={0x41,0x42,0x43,0x44,0x45};
char* pbExpArray=NULL;
unsigned int Flag=1;
int len=0;

pbExpArray=BytesToString(pbArray,5);
free(pbExpArray);
Flag=strcmp("41 42 43 44 45 ",pbExpArray);
len=strlen(pbExpArray);

return 0;
}

我已经设置了这样的项目属性:

ByteToString 和 Utility 项目调用约定都是:__cdecl

在 ByteToString 中,Linker->General->Additional Directories: $(OutDir)

(我也试过这个 Linker->General->Additional Directories:$(SolutionDir)$(Configuration)\)

在 ByteToString 中,Linker->Input->Additional Dependenicies: Utility.lib

我也试过这个,
#ifndef _UTILITY_H
#define _UTILITY_H
extern "C"
{
__declspec(dllexport) char* BytesToString( const unsigned char* PpcbBytes, const unsigned int PuiNoOfBytes);
}
#endif

这给出了错误:

error C2059: syntax error : 'string'



更新:
  • 在创建项目时,我添加了 实用程序.cpp .我将其重命名为 实用程序.c ,设置项目属性并编译。我得到了上面显示的错误。
  • 然后我将其重命名为 实用程序.cpp 并编译。没有错误。

  • 为什么是这样?我要 实用程序 文件在 .c .添加 的正确方法是什么? .c 文件到项目中?

    最佳答案

    改为用 extern "C"声明外部。

    关于c - Visual c中的错误LNK2010,无法调用其他项目文件中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9273030/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com