【问题标题】:Fixed typo in C code, still won't build修复了 C 代码中的拼写错误,仍然无法构建
【发布时间】:2012-07-31 13:57:45
【问题描述】:

我正在将某人的 Palm Pilot 代码转换为他们的 Android 应用程序。这涉及到我使用 NDK 从他们已经构建的库之一中读取。为此,我需要创建几个新函数。

void __stdcall FreeRelay(void){
    RelayAPI_DataValid=0;
    RelayAPI_SetBaud=0;
    RelayAPI_get=0;
    RelayAPI_put=0;
    RelayAPI_flush=0;
    RelayAPI_delay=0;
    RelayAPI_initilized=0;
}

void Java_my_MainMenu_FreeRelayJava( JNIEnv * env, jobject this ) {
    RelayAPI_DataValid = 0;
    RelayAPI_SetBaud = 0;
    RelayAPI_get = 0;
    RelayAPI_put = 0;
    RelayAPI_flush = 0;
    RelayAPI_delay = 0;
    RelayAPI_initilized = 0;
}

现在,我的错误出现在第二种方法的最后一行。我原来的拼写是RelayAPI_initialized,我知道那是正确的,但我不会因为错字而更改所有这些 C 代码的麻烦。我会让我的函数适合旧代码。无论如何,我尝试了ndk-build 并得到了这个。

现在在这些单独的 ndk-build 调用之间,我修复了错误。但它仍然在第 615 行告诉我,处理 RelayAPI_initialized 时出现错误,但它不存在。我不知道发生了什么,而且我对 C 真的知之甚少。我用更新的信息保存了我的文件,然后称为ndk-build。我错过了什么?

【问题讨论】:

    标签: android android-ndk compiler-errors


    【解决方案1】:

    也许您可以使用 grep 来查找是否在某些 c 代码或头文件中全局定义了 RelayAPI_* 等其他 var。 如果没有,定义它,或者不设置它。

    它将解决编译错误...但可能不会工作

    【讨论】:

      【解决方案2】:

      清理你的构建。所以党建的东西被删除,你得到一个完整的重建。

      【讨论】:

      • 我这样做无济于事。我应该按什么顺序执行此操作以确保我正确执行此操作。 ndk-build clean,那么 ndk-build 应该可以工作吗?
      • relayapi_initialized 声明在哪里?我看不到这些变量的任何声明。
      • 我认为你不明白我在问什么。 RelayAPI_initilized 已被声明并已在多个其他函数中使用。我写了我自己的变量RelayAPI_initialized 所以它给了我上面的错误。我回去修复了拼写以匹配整个代码中已经无处不在的成员,它实际上给了我完全相同的错误。告诉我,我在看它的拼写仍然是RelayAPI_initialized,即使它不是。
      • 我明白了。你按保存了吗?用记事本检查您正在编译的文件是否已更新。进行清理,然后查看目录以检查 .o 文件是否已消失以及其他非源文件。
      • 好吧,我关闭了程序,然后重新打开了文件,它按照我想要的方式更新了。我查看了 JNI 文件夹,但找不到任何 .o 文件。我对如何工作 C 一无所知,他们在其他地方吗?
      猜你喜欢
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 2015-09-23
      • 2016-12-04
      相关资源
      最近更新 更多