我有一个用C ++编程的dll,以及用Visual C ++编写的exe文件。
我将dll中的函数声明为:
string __declspec( dllexport ) ConfigureHAT(T_STRING pathFile);
在exe项目中,我包含了所有头文件和dll文件。
我在dll中调用该函数:
string ret = ConfigureHAT("file.txt");
当编译可执行项目时,它会因下一个错误而失败:
1> HATdllTester.obj:错误LNK2028:未解析的令牌(0A000317)“类 的std :: basic_string的,类 std :: allocator> __cdecl ConfigureHAT(类 的std :: basic_string的,类 std :: allocator>)“ (?ConfigureHAT @@ $$ FYA?AV?$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ V12 @@ Z) 在函数“private:void __clrcall中引用 HATdllTester :: mainWindow :: buttonConfigure_Click(类System :: Object ^,类System :: EventArgs ^)“ (?buttonConfigure_Click @主窗口@ @@ HATdllTester $$ FA $ $ AAMXP @ AAVObject系统@@ P $ AAVEventArgs @ @@ 4 Z)
1> AssemblyInfo.obj:错误LNK2028:未解析的令牌(0A000316)“类 的std :: basic_string的,类 std :: allocator> __cdecl ConfigureHAT(类 的std :: basic_string的,类 std :: allocator>)“ (?ConfigureHAT @@ $$ FYA?AV?$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ V12 @@ Z) 在函数“private:void __clrcall中引用 HATdllTester :: mainWindow :: buttonConfigure_Click(类System :: Object ^,类System :: EventArgs ^)“ (?buttonConfigure_Click @主窗口@ @@ HATdllTester $$ FA $ $ AAMXP @ AAVObject系统@@ P $ AAVEventArgs @ @@ 4 Z)
1> AssemblyInfo.obj:错误LNK2019:未解析的外部符号“class 的std :: basic_string的,类 std :: allocator> __cdecl ConfigureHAT(类 的std :: basic_string的,类 std :: allocator>)“ (?ConfigureHAT @@ $$ FYA?AV?$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ V12 @@ Z) 在函数“private:void __clrcall中引用 HATdllTester :: mainWindow :: buttonConfigure_Click(类System :: Object ^,类System :: EventArgs ^)“ (?buttonConfigure_Click @主窗口@ @@ HATdllTester $$ FA $ $ AAMXP @ AAVObject系统@@ P $ AAVEventArgs @ @@ 4 Z)
1> HATdllTester.obj:错误LNK2001:未解析的外部符号“类 的std :: basic_string的,类 std :: allocator> __cdecl ConfigureHAT(类 的std :: basic_string的,类 std :: allocator>)“ (?ConfigureHAT @@ $$ FYA?AV?$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ V12 @@ Z)
任何人都可以帮助我吗? 我读了很多类似的错误,但是没有人解决我的问题。
感谢。
最后,我解决了问题,包括在dll项目中生成的.lib文件到Project Properties - >链接器 - >输入 - >附加依赖。
答案 0 :(得分:3)
我尝试更改Visual Studio项目配置。根据一般>公共语言运行时支持设置/clr
而不是/clr:pure
。
答案 1 :(得分:0)
当我更改private ctaButtonSpinnerTriggered: BehaviorSubject<
boolean
> = new BehaviorSubject(false);
public get isCtaButtonSpinnerTriggered(): Observable<boolean> {
return this.ctaButtonSpinnerTriggered.asObservable();
}
public set isCtaButtonSpinnerTriggered(isDisabled: boolean): void {
this.ctaButtonSpinnerTriggered.next(isDisabled);
}
MyProjectCLR.vcxproj项目文件并向return combineLatest([
this.ctaDisabled,
this.isCtaButtonSpinnerTriggered,
])
MyProjectC.vcxproj项目添加链接时,这对我有帮助
CLR