这是.cpp文件的内容。我希望Parse可以从C#项目中运行。
#include "stdafx.h"
#include "DateTimeParser.h"
using namespace std;
System::DateTime Parse(string myString)
{
int year, month, day;
sscanf_s(myString.c_str(), "%4d-%2d-%2d",&year, &month, &day);
System::DateTime dateTime = System::DateTime(year,month,day);
return dateTime;
}
如何定义h文件?我尝试了以下内容。
#pragma once
#include <iostream>
using namespace System;
ref class DTParser
{
public:
System::DateTime Parse(std::string myString);
};
我收到了这个错误:
1>------ Build started: Project: DateTimeParser, Configuration: Debug Win32 ------
1> DateTimeParser.cpp
1>DateTimeParser.obj : error LNK2020: unresolved token (06000001) DTParser::Parse
1>DateTimeParser.obj : error LNK2020: unresolved token (06000002) DTParser::main
1>\Debug\DateTimeParser.dll : fatal error LNK1120: 2 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
答案 0 :(得分:0)
根据您的说法,我认为问题不是头文件。问题是您没有为CLR编译C ++代码。 您必须将C ++代码放在单独的程序集中,并在项目设置中激活公共语言运行时支持。
答案 1 :(得分:0)
在你的头文件中有
System::DateTime Parse(std::string myString);
这可能只是
DateTime Parse(std::string myString);
由于不需要命名空间