首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用静态C++库的Windows 8 WinRT应用程序具有多个为vccorlibd定义的符号

使用静态C++库的Windows 8 WinRT应用程序具有多个为vccorlibd定义的符号
EN

Stack Overflow用户
提问于 2012-06-20 20:57:15
回答 1查看 1.4K关注 0票数 2

我有一个用于Windows8的WinRT应用程序,其中包含几个C++静态库和一个WinRT原生静态C++库。它没有链接,因为它抱怨与线程模型库相关的多个定义的符号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vccorlibd.lib(tmmta.obj) : error LNK2005: "int __abi___threading_model" (?__abi___threading_model@@3HA) already defined in vccorlibd.lib(tmdefault.obj)
fatal error LNK1169: one or more multiply defined symbols found

注意,它试图用默认的踏步模型库(tmdefault)链接MTA线程模型库(tmmta)。

我在项目属性中找不到任何更改此设置的设置。我找到的最接近的是CLR Thread属性,但更改此设置没有任何效果。我不知道我的解决方案中的哪个子项目正在使用哪个线程模型。

如何以及在哪里可以查看和更改线程模型设置?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-31 07:45:23

这是关于你的问题的答案。我也遇到了同样的问题:)

http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/f57406a6-3892-4981-86da-135862cf4b41?prof=required

编辑:

这可能是因为你有main()函数或者/并且你在你的WinRT静态库中定义了[Platform::MTAThread] (创建MTA符号)。现在,可执行代码不知道应该如何初始化,因为可执行代码不知道任何关于您的声明的信息。

你可以将这个main()函数移到你的可执行项目中,或者(在我的例子中是这样的)确保你在声明你的主函数的地方把头包含到object中,这样链接器就可以看到它,而不会复制符号。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11128076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文