我有一个用于Windows8的WinRT应用程序,其中包含几个C++静态库和一个WinRT原生静态C++库。它没有链接,因为它抱怨与线程模型库相关的多个定义的符号:
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属性,但更改此设置没有任何效果。我不知道我的解决方案中的哪个子项目正在使用哪个线程模型。
如何以及在哪里可以查看和更改线程模型设置?
谢谢!
发布于 2012-08-31 07:45:23
这是关于你的问题的答案。我也遇到了同样的问题:)
编辑:
这可能是因为你有main()
函数或者/并且你在你的WinRT静态库中定义了[Platform::MTAThread]
(创建MTA符号)。现在,可执行代码不知道应该如何初始化,因为可执行代码不知道任何关于您的声明的信息。
你可以将这个main()
函数移到你的可执行项目中,或者(在我的例子中是这样的)确保你在声明你的主函数的地方把头包含到object中,这样链接器就可以看到它,而不会复制符号。
https://stackoverflow.com/questions/11128076
复制相似问题