Extern "C" 给出错误 "Linkage specification is not allowed" 即使在添加 def 之后。在头文件中?

Extern "C" giving error "Linkage specification is not allowed" even after adding def. in header file?

这是我的 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 但在这个文件中我收到错误:

Linkage specification is not allowed

我正在使用 VC++ 生成 DLL 文件,并试图从 SO 中找到相同的解决方案,但他们都提到只是添加 def。在你的头文件中。 即使这样做之后,错误仍然存​​在。 有什么想法吗?

我删除了我在 main 函数中调用的方法并将其放在 main 之外,然后它开始像 charm 一样工作