error LNK2019: unresolved external symbol "char * __cdecl BytesToString(unsigned char const *,unsigned int)" ([email protected]@[email protected]) referenced in function _wmain C:\Users\anandada\Documents\Visual Studio 2010\Projects\ByteToString\ByteToString\ByteToString.obj ByteToStringビジュアルcのLNK2010エラー、他のプロジェクトファイルのメソッドを呼び出せません。
上記のエラーが発生しています。コードを以下に示します。 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とユーティリティプロジェクトの呼び出し規則は次のとおりです。__cdecl
ByteToString、リンカー - >一般 - >追加ディレクトリで:$(OUTDIR)
(私はこのあまりにリンカー - >一般 - >追加のディレクトリみました:$(SolutionDir)$(構成)\)
ByteToString、リンカー - >入力 - >追加Dependeniciesで:
:Utility.lib私はこれを試してみましたaslo、
#ifndef _UTILITY_H
#define _UTILITY_H
extern "C"
{
__declspec(dllexport) char* BytesToString(const unsigned char* PpcbBytes, const unsigned int PuiNoOfBytes);
}
#endif
これはエラーになります
更新:
- プロジェクトを作成している間、私はUtility.cppを追加しました。 Utility.cに名前を変更し、プロジェクトのプロパティを設定してコンパイルしました。私は上記のエラーを受け取りました。
- その後、Utility.cppに名前を変更してコンパイルしました。エラーはありません。
なぜですか?私はユーティリティファイルは.cにしたいです。 .cファイルをプロジェクトに追加する正しい方法は何ですか?
2番目のプロジェクトにファイルを含めるときに__declspec(dllimport)を使用してみましたか? –
私は__declspec(dllimport) 'char * BytesToString(const unsigned char * PpcbBytes、const unsigned int PuiNoOfBytes);を使用しました。メインの前にうまく行かなかった。 – SHRI