请帮忙,我花了一整天的时间来尝试编译我的c ++应用程序.
我的项目包含一个源文件:Foo.cpp.这是它的代码:
#include <jni.h>
#include <com_Foo.h>
JNIEXPORT jint JNICALL Java_com_Foo_add
(JNIEnv * env, jobject obj, jint x, jint y)
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
你可以看到我试图使用JNI,但我不认为这与问题有任何关系.这是我在命令行上尝试的内容:
C:\Users\michael\cworkspace\foo>cl -LD Foo.cpp -FeFoo.dll
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
Foo.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/dll
/implib:Foo.lib
/out:Foo.dll
Foo.obj
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
Run Code Online (Sandbox Code Playgroud)
在我的环境中我设置:
INCLUDE:C:_\include; C:\ frankenstein\includes; C:\ Program Files\Java\jdk1.6.0_24\include; C:\ Program Files\Java\jdk1.6.0_24\include\win32; C:_\include\win32; C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\include
LIBPATH:C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\lib
我检查了lib目录,它包含一个"libcmt.lib"文件.不知道它是否区分大小写,但我知道我从未改变过visual studio文件或目录中的任何内容.
有人请告诉我如何才能做到这一点?
Ale*_*mer 15
由于没有其他解决方案对我的情况有所帮助,因此在2018年末重新启用了该线程:)
对我来说,在为完全不相关的项目安装Windows驱动程序工具包之后,这个错误就开始出现了。
如果您不需要“ Spectre Mitigation”(很可能不需要),并且看到此错误,则很有可能只需设置项目属性(属性页)->配置属性-> C / C ++->代码生成- >幽灵缓解到禁用。
神奇的是,在所有项目中,Visual Studio工具的安装程序都将WDK 设置为Enabled,即使它们与WDK无关,也没有为任何与驱动程序相关的东西选择Platform工具集。微软最好的。
只是在这里添加我的经验,因为它可能对某人有所帮助,并且适用于更新的VS版本(以我为例,2017年)。
将项目移至新计算机时,在编译过程中出现类似错误。我终于发现依赖项中的一个项目启用了幽灵缓解功能,并且默认情况下不包括具有该支持的库: