【问题标题】:Cannot find or open the PDB file Visual studio 2012无法找到或打开 PDB 文件 Visual Studio 2012
【发布时间】:2013-12-28 14:07:18
【问题描述】:

我正在尝试从 C++ 运行 jar 文件

我写了这段代码:

#include "stdafx.h"
#include <iostream>
#include <strsafe.h>
#include <stdexcpt.h>
#include "jni.h"
#include <conio.h>
#include <Windows.h>
using namespace std;

#pragma comment (lib,"C:\\Users\\Hilla\\Documents\\Visual Studio 2012\\helloworld\\helloworld\\jvm.lib")

int main()

{  
    JavaVM *jvm;
    JNIEnv *env;
    JavaVMInitArgs vm_args;

    JavaVMOption options[3];
    options[0].optionString = "-Djava.compiler=NONE";
    options[1].optionString="-Djava.class.path=C:\\Users\\Hilla\\Documents\\Visual      
        Studio 2012\\helloworld\\Debug\\hello.jar";
    options[2].optionString="verbose.jni";
    vm_args.version=JNI_VERSION_1_6;
    vm_args.nOptions=3;
    vm_args.options=options;
    vm_args.ignoreUnrecognized=0;
    int ret=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
    printf("hilla");



}

我使用 x64 编译器。 我将 JVM lim 添加到系统路径。

它仍然给我这个错误:

'helloworld.exe' (Win32): 加载'C:\Users\Hilla\Documents\Visual Studio 2012\helloworld\x64\Debug\helloworld.exe'。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\ntdll.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\kernel32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\KernelBase.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Program Files\Java\jdk1.7.0_45\jre\bin\server\jvm.dll”。无法找到或打开 PDB 文件。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\msvcp110d.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\msvcr110d.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\user32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\advapi32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\wsock32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\winmm.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\psapi.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\msvcr100.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\gdi32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\msvcrt.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\sechost.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\rpcrt4.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\ws2_32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\winmmbase.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\nsi.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\cfgmgr32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\devobj.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\imm32.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\msctf.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\nvinitx.dll”。无法找到或打开 PDB 文件。
“helloworld.exe”(Win32):已加载“C:\Program Files\NVIDIA Corporation\coprocmanager\detoured.dll”。无法找到或打开 PDB 文件。 “helloworld.exe”(Win32):已加载“C:\Program Files\NVIDIA Corporation\coprocmanager\Nvd3d9wrapx.dll”。无法找到或打开 PDB 文件。
“helloworld.exe”(Win32):已加载“C:\Windows\System32\setupapi.dll”。已加载符号。
“helloworld.exe”(Win32):已加载“C:\Program Files\NVIDIA Corporation\coprocmanager\nvdxgiwrapx.dll”。无法找到或打开 PDB 文件。

程序“[7688] helloworld.exe”已退出,代码为 0 (0x0)。

我该如何解决这个问题?

【问题讨论】:

  • 我怀疑 nVidia dll 是否有 pdb 文件,因此您将无法轻松调试这些文件。尽管您真的需要了解 GPU 驱动程序内部发生了什么吗?
  • 真正的问题是什么?
  • int ret=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);返回 -1?
  • 你在java类路径中有一个空格。需要用引号括起来吗?
  • 因为我20年没有学过java了,我不记得了。 java类路径变量是否需要在包含空格的路径上使用带引号的字符串,或者JavaVMOption会处理这个问题。我怀疑 jvm 没有找到 jar 文件,因为路径中有空间。

标签: java c++ jar jvm java-native-interface


【解决方案1】:

PDBVisual Studio 使用的调试信息文件。这些是系统 DLL,您没有调试符号。转到 Tools-&gt;Options-&gt;Debugging-&gt;Symbols 并选中复选框 Microsoft Symbol Servers,Visual Studio 将自动下载 PDB。

请阅读 VS 2010 here

发布的类似问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2015-01-27
    • 1970-01-01
    • 2015-04-07
    • 2016-04-03
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多