ошибка LNK2019: неразрешенный внешний символ "char * __cdecl
BytesToString (unsigned char const *, unsigned int) "
(? BytesToString @@ YAPADPBEI @ Z) ссылка в функции
_wmain C: \ Users \ anandada \ Documents \ Visual Studio 2010 \ Projects \ ByteToString \ ByteToString \ ByteToString.obj ByteToString
выше - ошибка, которую я получаю. код показан ниже. ByteToString - консольное приложение Win32, а служебная программа - 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-> Дополнительные каталоги: $ (OutDir)
(я тоже пробовал Linker-> General-> Дополнительные каталоги: $ (SolutionDir) $ (Configuration) \)
В ByteToString, Linker-> Input-> Дополнительные зависимости: Utility.lib
Я тоже это пробовал,
#ifndef _UTILITY_H
#define _UTILITY_H
extern "C"
{
__declspec(dllexport) char* BytesToString( const unsigned char* PpcbBytes, const unsigned int PuiNoOfBytes);
}
#endif
Это дает ошибку:
ошибка C2059: синтаксическая ошибка: 'строка'
Обновление:
- При создании проекта я добавил Utility.cpp . Я переименовал его в Utility.c , установил свойства проекта и скомпилировал. Я получил ошибку, показанную выше.
- Затем я переименовал его обратно в Utility.cpp и скомпилировал. Нет ошибок.
Почему это? Я хочу Utility файл в .c . Как правильно добавить файл .c в проект?