- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我运行带有目标 all 的 makefile 时,我遇到了 JNI 问题
这是我的问题:
**** Build of configuration Default for project TestTapeJNI ****
make all
javah -classpath ../bin TestTape
gcc -I"/home/tanio/DevelopmentEnvironment/jdk1.7.0_51/include"I"/home/tanio/DevelopmentEnvironment/jdk1.7.0_51/include/linux" -c TestTape.c -o TestTape.o
gcc -Wl,--add-stdcall-alias -shared -o Tape.dll TestTape.o
/usr/bin/ld: unrecognized option '--add-stdcall-alias'
/usr/bin/ld: use the --help option for usage information collect2: ld returned 1 exit status
make: *** [Tape.dll] Error 1
你知道问题出在哪里吗?
编辑
如果我尝试从 makefile 中取消它,则会触发此问题
make all
javah -classpath ../bin TestTape
gcc -Wl, -shared -o Tape.dll TestTape.o
/usr/bin/ld: cannot find : No such file or directory
collect2: ld returned 1 exit status
make: *** [Tape.dll] Error 1
生成文件
# Define a variable for classpath
CLASS_PATH = ../bin
# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)
all : Tape.dll
# $@ matches the target, $< matches the first dependancy
Tape.dll : TestTape.o
gcc -Wl, -shared -o $@ $<
# $@ matches the target, $< matches the first dependancy
TestTape.o : TestTape.c TestTape.h
gcc -I"/home/tanio/DevelopmentEnvironment/jdk1.7.0_51/include" -I"/home/tanio/DevelopmentEnvironment/jdk1.7.0_51/include/linux" -c $< -o $@
# $* matches the target filename without the extension
TestTape.h : TestTape.class
javah -classpath $(CLASS_PATH) $*
clean :
rm TestTape.h TestTape.o Tape.dll
最佳答案
根据此链接 http://www.delorie.com/gnu/docs/binutils/ld_4.html
所以一个有效的解决方案就是删除它(..std..alisa..),你的 gcc 命令现在变成:
gcc -Wl -shared -o Tape.dll TestTape.o
关于java - 运行 makefile --add-stdcall-alias 时出现 JNI 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605154/
据我所知,只有 caller-clean-stack 约定可以使用变量参数。 顺便说一句,WinApi StringCchPrintfW 是这样声明的。(我删除了 SAL) __inline HRES
现在我正在设计一个函数f(index,...),它将调用函数数组中的#index条目并传递其余参数。如果您将函数数组视为服务列表,那么 f 的作用就像一个服务分发器。 f 是用汇编语言编写的。它弹出第
我对此很好奇: 当我从使用stdcall调用约定导出的动态链接库导入函数时,是否必须在external之前添加stdcall Delphi 从版本 7 开始? 即 LIBNAME int __stdc
在我的库中,我在特定条件下调用方法,这需要 stdcall 调用约定。目前,我正在使用编译器静态解析,将其实现为相当大的众所周知的方法签名列表和子例程的相应重载版本。这可行,但看起来很丑陋,并且没有
使用 D 内联汇编尝试实现动态调用 stdcall 函数(使用动态参数) 我有以下程序集args 是一个指向 32 位整数数组的 void 指针 argc 是参数计数的数量 ret 是一个 void
我正在将代码从 C++ 转换为我的 VB.NET 应用程序。这是 C++ 代码: typedef int (__stdcall *init_t)(uint32_t value,uint32_t pa
我正在编写一些使用 jni 的代码。我的目标平台是 Windows。所以我的 jni 函数必须使用 stdcall 调用约定,但 Rust 仅使用 cdecl 调用约定导出函数。 我使用 MinGW(
我无法将 stdcall 函数名称“TestFunction”作为参数传递给 ExecuteLocalThread 并在 beginthreadex 中使用 unsigned __stdcall Te
我正在使用 GCC 处理我自己的内核,当从 asm 代码调用 C 函数时,我必须做 add esp,xx我自己。经过一番搜索,我发现 stdcall是微软的发明,不能在 GCC 中使用。有什么方便的方
我目前正在尝试移植旧的 owl-c++-builder-projekt 以使用 XE2 和 owlnext。在旧文件中,我可以简单地调用一行 (FARPROC)LP_I2COpen = GetProc
我正在尝试使用具有回调机制的 (C) 第三方库,该机制缺少任何可能的识别调用上下文的方法。我的主要项目在 C# 中,我的包装器是一个调用 C 库 API 的 C++/CLI 项目。 为了解决这个问题,
有人可以给我一些为 MS winapi 函数创建函数指针的技巧吗?我正在尝试为 DefWindowProc (DefWindowProcA/DefWindowProcW) 创建指针,但出现此错误: L
我有简单的代码。 StdCall 是 __stdcall 而 CdeclCall 是 __cdecl。 #include int __stdcall StdCall(int a,int b) {
我有一个指向 COM 接口(interface)的指针,想从它的虚拟表中获取函数指针并进行方法调用。为此,我需要进行 stdcall 方法调用。在 Go 中如何使用约定 stdcall 进行调用或在
我制作了一个 DLL,它导出多个函数(使用 stdcall)。我想让其中一些接受或不接受参数。所以懒惰的程序员可以直接调用它而不需要任何参数。我在论坛上的某个地方读到默认参数在 DLL-s 中不起作用
我正在设计一个必须至少在 mingw 和 msvc++ 之间二进制兼容的 API。到目前为止,我限制自己使用接受和返回原始数据类型的函数或指向具有统一成员的 POD 结构的指针(即,成员都是同一类型,
在 Windows 下构建 DLL 时,我得到以下输出: Linking main.exe ... Warning: resolving _findPeaksWrapper by linking to
这个问题已经有答案了: Is there any equivalent for stdcall in GCC? (1 个回答) Is there STDCALL in Linux? (3 个回答) 已
我试图通过创建指定我需要使用的函数的 .def 文件,将函数从非托管 DLL 导入到 C 项目中。我正在练习 user32.dll 中的 WinAPI 函数 MessageBoxA。与其他 WinAP
我需要创建一个 C++ dll,它将通过 stdcall 从另一个程序调用。 需要什么:调用程序将字符串数组传递给 dll,dll 应该更改数组中的字符串值。然后,调用程序将继续使用来自 dll 的这
我是一名优秀的程序员,十分优秀!