我有一个最初用C编写的项目。它非常大,所以如果我可以避免它,我不想手工重写它。最终目标是将其嵌入到C#应用程序中。我以前制作和使用过CLR库,但是我遇到了以下问题。
// CommandParse.h, used in a Win32 DLL
extern "C" {
typedef struct _PARAMS {
PCHAR OutputDir;
//... other members
} PARAMS, *PPARAMS;
// defines in CommandParse.c
__declspec(dllexport) VOID CmdParseParameters(PPARAMS, int, char ** const);
}
我正在使用VS2013进行这些项目。上面的例子是每个其他组件中使用的刻板设计模式。
// CommandParseWrapper.h, CLR library
namespace WrappedCode {
public ref class CommandParams {
PPARAMS params;
public:
CommandParams() {
params = new PARAMS;
}
void parse(int argc, char ** const argv) {
CmdParseParameters(params, argc, argv);
}
}
}
我在CLR项目中所做的是添加Win32DLL项目作为参考,并将源代码添加到VS2013中的“其他包含”设置。但是我提出了以下错误。
错误LNK2019:未解析的外部符号“extern”C“void __cdecl CmdParseParameters(struct _PARAMS *,int,char ** const)”...
错误LNK2028:未解析的令牌(0A00002E)“extern”C“void __cdecl CmdParseParameters(struct _PARAMS *,int,char ** const)”...
导致编译失败。 有什么建议吗?
注意:我不反对编辑原始代码。