【问题标题】:creating shared library from c++从 C++ 创建共享库
【发布时间】:2010-04-12 09:51:50
【问题描述】:

当我尝试在 vc++ 中使用“cl”命令创建共享库文件时,它显示了一个错误,提示 "fatal error c1083: can't open compiler generated file 'file.obj':permission denied"。 谁能帮帮我……???

【问题讨论】:

  • 为什么这被标记为“java”?
  • 你想在哪个目录下编译它?你到底在输入什么命令? (@Neil Butterworth:重新标记)
  • C:\Program Files\Microsoft Visual Studio 9.0\VC>cl -I"c:\Program Files\Java\jdk1.6.0_18\include" -I"c:\Program Files\Java \jdk1.6.0_18\include\win32" -I"c:\Users\402100\Documents\jni 和 cpp\jni\build\classes\jniandcpp\Main.h" -LD "c:\Users\402100\Documents\ jni 和 cpp\jni\build\classes\jniandcpp\file.cpp" -Fe newfile.dll 这是我正在输入的命令...
  • @robi: Java or Java Native Interface 和这个问题有什么关系?
  • 从一个java程序我需要调用用c++编写的本机函数。为了执行该操作,我需要使用上述命令创建的共享库...

标签: c++ windows visual-c++ dll


【解决方案1】:

出现权限被拒绝错误是因为您当前的工作目录“C:\Program Files\Microsoft Visual Studio 9.0\VC”是编译器将写入它的临时文件等的位置(因为您没有指定备用路径)。您可能没有对该位置的写入权限,因此会出现错误。

你基本上有两种选择:

  1. 将目录更改为您具有写入权限的位置,然后调用 cl.exe。 (如果您使用 Visual Studio 命令提示符,cl.exe 应该在您的路径中,您不必担心指定编译器的完整路径)。
  2. 为您的 DLL 指定一个输出目录(编译器将使用与中间文件相同的路径)。

【讨论】:

    【解决方案2】:

    我猜它是由其他一些应用程序以写入模式打开的......

    【讨论】:

    • 我不知道...理想情况下,只有在 1> 它被其他应用程序打开 2> 您没有权限(管理员或其他用户已限制此文件的权限)3> 时才会拒绝权限以前的应用程序没有正确关闭它
    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 2018-10-26
    • 2020-01-03
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    相关资源
    最近更新 更多