2016-06-18 11 views
1

私はxcodeを使ってコードをコンパイルしています。 IOKitのは、既に「ライブラリとリンクバイナリ」に含まれていますが、私はまだ、次のエラーを取得:io_service_open_extended link failure

Undefined symbols for architecture x86_64:

"_io_connect_method_scalarI_scalarO"

"_io_service_open_extended"

_main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

これら二つの機能は、次のコードを使用してプログラム内で定義されていますが:

extern "C" kern_return_t io_service_open_extended 
(
    mach_port_t service, 
    task_t owningTask, 
    uint32_t connect_type, 
    NDR_record_t ndr, 
    io_buf_ptr_t properties, 
    mach_msg_type_number_t propertiesCnt, 
    kern_return_t *result, 
    mach_port_t *connection 
); 
extern "C" kern_return_t io_connect_method_scalarI_scalarO(
                  io_connect_t conn, uint32_t selector, 
                  io_scalar_inband64_t scalar_input, 
                  mach_msg_type_number_t scalar_inputCnt, 
                  io_struct_inband_t inband_output, 
                  mach_msg_type_number_t *inband_outputCnt 
                  ); 

をしかし、これらの関数は、AppleのAPIリファレンスにあり、Google検索も可能です。

+0

独自の関数宣言を提供しているという事実は、宣言用のヘッダーファイルを含める必要があるため、これらの関数は一般用ではないことを示しているようです。 [ソースコード](https://opensource.apple.com/source/IOKitUser/IOKitUser-1050.1.21/)を見て、宣言され定義されている場所が見つかるかどうかを確認してください。 – Droppy

答えて

-1

これを試してみてください:

ビルドアクティブアーキテクチャのみを「いいえ」に設定してください。

+0

これを行うと、リンクのエラーの可能性が高まり、それらを減少させることなく、*より*少ない* CPUアーキテクチャーを構築することになります。それは、それが何をしているのか分からずに追加されたひどい定期的な定型回答です。 – Droppy