即使在添加 def 之后,外部“C”也会给出错误“不允许链接规范”。在头文件中?
Posted
技术标签:
【中文标题】即使在添加 def 之后,外部“C”也会给出错误“不允许链接规范”。在头文件中?【英文标题】:Extern "C" giving error "Linkage specification is not allowed" even after adding def. in header file? 【发布时间】:2015-06-25 12:19:41 【问题描述】:这是我的 main.cpp 文件中的代码:
extern "C" JNIEXPORT jint JNICALL Java_SomefnHandling_Jni_1someInit (JNIEnv * env, jobject , jstring var1, jstring var2)
//rest part of code in here
这是我的 main.h 文件中的定义:
#ifdef __cplusplus
extern "C"
#endif
JNIEXPORT jint JNICALL Java_Someufnhandling_Jni_1someInit
(JNIEnv *, jobject, jstring, jstring);
#ifdef __cplusplus
#endif
这个程序从一个java文件中获取2个参数并使用jni接口传递给我的dll,但是在这个文件中我得到了错误:
不允许链接规范
我正在使用 VC++ 生成 DLL 文件,并试图从 SO 中找到相同的解决方案,但他们都提到只是添加 def。在你的头文件中。 即使这样做,错误仍然保持不变。 有什么想法吗?
【问题讨论】:
尝试将 main.cpp 中的函数定义放在 extern "C" 括号内,而不是将 extern "C" 放在同一行 已经试过了……不行…… 您是否打错字或转录错误?声明和定义的函数名不同,这几乎肯定不是你想要的。 naah dat one 在尝试运行的代码 m 中是正确的 【参考方案1】:我删除了我在 main 函数中调用的方法,并将它放在 main 之外,然后它就开始像魅力一样工作了
【讨论】:
以上是关于即使在添加 def 之后,外部“C”也会给出错误“不允许链接规范”。在头文件中?的主要内容,如果未能解决你的问题,请参考以下文章
Django 给出“CSRF 令牌丢失或不正确”。即使在 POST 调用中传递它之后也会出错
即使正确设置了所有权限,Cloudkit 也会不断给出创建权限错误