Nordic nrf52840 の C プロジェクトにコンパイル済みライブラリを含めようとしています。以下 (私が理解している限り) は、いくつかのメソッドにリンクしfoo
、プロジェクトの残りのファイルbar
内にリンクする方法です。.lib
これを Segger Embedded Studio でコンパイルしようとするexpected '=', ',', ';', 'asm' or '__attribute__' before 'int'
と、次のコード スニペットで次のエラーが発生します。
#ifndef _FOOBAR_SERVICE_H_
#define _FOOBAR_SERVICE_H_
#if (defined(__linux__) || defined(__APPLE__) || defined(ARDUINO) ||
defined(__MSP430FR5969__))
#define IMPORT __attribute__ ((visibility ("default")))
#define EXPORT __attribute__ ((visibility ("default")))
#define LOCAL __attribute__ ((visibility ("hidden")))
#elif defined(_WIN32)
#define EXPORT __declspec(dllexport)
#endif
#include <stdbool.h>
#ifdef __cplusplus
extern "C"
{
#endif
EXPORT int ble_foo(unsigned char *a, unsigned char *buffer); //<--(error)
EXPORT int ble_bar(unsigned char *b, unsigned char *buffer); //<--(same error)
#ifdef __cplusplus
}
#endif
#endif /* _FOOBAR_SERVICE_H_ */
上記は#include "foobar_ble.h"
私のファイルに含まれていmain.c
ます。
extern "C"
その一部は、C コードをコンパイルする方法であると信じているという私の誤解かもしれません。#ifdef __cplusplus
C++としてコンパイルすることをチェックしていると思いますが、これはC環境内でさえ利用されていないことを意味しますextern "C"
か?
また、C 内のキーワードの適切な説明が見つからないようですEXPORT
。これも問題の原因になる可能性があります。
Tl;dr: バカすぎる、質問が多すぎる、助けが必要です。よろしくお願いします。