解决问题:没有用选项“/LIBPATH:”指定的参数

本文详细介绍了如何使用LIBS+参数来指定链接库的位置和名称,并通过具体实例展示了正确的配置方式。文中强调了-L参数后紧跟路径及-l参数后跟库名(去除lib前缀)的规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LIBS+=到底如何用!!!!!!

语法是 LIBS+= -L直接打地址 -l直接打库名

  • 注意点:-L后面没有空格,直接跟着地址,然后空格,-l后面是去掉lib之后的文件名。(真TMDSB!)
  • 一个例子:如我们有E:\CLibraries\NewmatL\debug\libNewmatL.a这个文件,则:
    • LIBS += -LE:\CLibraries\NewmatL\debug\ -lNewmatL
  • 或者如果需要编译的proE:\CLibraries\TEST-build-desktop下,则可以:

NEWMAT_ROOT = ..\NewmatL

LIBS += -L$${NEWMAT_ROOT}\debug -lNewmatL

raw_file.c "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:D:\anaconda3\libs /LIBPATH:D:\anaconda3 /LIBPATH:D:\anaconda3\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\ATLMFC\lib\x64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.26100.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.26100.0\\um\x64" c.lib /EXPORT:PyInit__hdf5maker build\temp.win-amd64-cpython-313\Release\src\hdf5maker.obj build\temp.win-amd64-cpython-313\Release\src\raw_file.obj /OUT:build\lib.win-amd64-cpython-313\_hdf5maker.cp313-win_amd64.pyd /IMPLIB:build\temp.win-amd64-cpython-313\Release\src\_hdf5maker.cp313-win_amd64.lib LINK : fatal error LNK1181: 无法打开输入文件“c.lib” error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.44.35207\\bin\\HostX86\\x64\\link.exe' failed with exit code 1181 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for hdf5maker Running setup.py clean for hdf5maker Failed to build hdf5maker error: failed-wheel-build-for-install × Failed to build installable wheels for some pyproject.toml based projects ╰─> hdf5maker
08-08
### 解决 IntelliJ IDEA 中 `System.load` 方法受限警告 当在 IntelliJ IDEA 2023.3 或更高版本中遇到 `System.load` 被标记为受限制方法的警告时,这是由于 IDE 的安全策略检测到潜在的安全风险。以下是可能的原因以及解决方案: #### 原因分析 IDEA 对某些敏感操作进行了更严格的检查,尤其是涉及加载本地库的操作(如通过 `System.load` 加载动态链接库)。这种行为可能是为了防止恶意代码利用此类功能执行未授权的操作。 --- #### 解决方案一:调整项目配置以绕过警告 可以通过修改项目的运行配置来禁用此特定警告。具体步骤如下: 1. 打开 **Run/Debug Configurations**。 2. 在对应的配置项下找到 **VM options** 字段。 3. 添加以下参数以忽略安全性检查: ```bash -Didea.no.security.checks=true ``` 此选项会告诉 IDEA 不要对当前项目应用额外的安全性验证[^1]。 --- #### 解决方案二:使用绝对路径替代相对路径 如果问题是由于传递给 `System.load` 的路径不明确引起的,则可以尝试改用绝对路径代替相对路径。例如: ```java // 使用相对路径可能会触发警告 System.load("libnative.so"); // 改为绝对路径通常能解决问题 String libPath = "/absolute/path/to/libnative.so"; System.load(libPath); ``` 注意:确保指定的路径对于目标环境始终有效并可访问[^2]。 --- #### 解决方案三:升级至最新稳定版 IDEA 考虑到引用中的建议提到官方已发布修复补丁的情况,强烈推荐将使用的 IDEA 版本更新到最新状态(至少应达到 2024.1.4 及以上),因为新版本很可能已经解决了与此类问题相关的漏洞或误报现象。 --- #### 替代实现方式——考虑使用 System.loadLibrary() 相比直接调用 `System.load()` ,推荐优先采用 `System.loadLibrary(String name)` 。后者更加灵活且易于维护,因为它允许 JVM 自动定位标准位置下的共享库而无需硬编码确切文件名。例如: ```java static { try { // 尝试加载名为 'mylibrary' 的库 System.loadLibrary("mylibrary"); } catch (UnsatisfiedLinkError e) { System.err.println("Native code library failed to load.\n" + e); } } ``` 上述代码片段展示了如何优雅处理异常情形的同时避免显式依赖于具体的 .so/.dll 文件名称[^3]。 --- ### 总结 针对 `System.load` 出现 “restricted method” 提醒的问题,可通过适当调整 VM 参数、切换成更为健壮的方法或者及时跟进软件迭代等方式予以妥善处置。务必权衡每种措施利弊之后再做决定。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值