Mac向けのコードでCODANを実行しようとすると、これらのエラーが発生しました。私のMac SDKライブラリは、this questionのようにシンボリックリンクを介して配布されていました(しかし、それらのすべてではありません - 調整してください!)結局、すべてのヘッダーが含まれていないことが判明しました。 、今IOKit/IOKitLib.h
で定義された関数の正しいシグネチャを、(私が持っていなかった)である
Invalid arguments 'Candidates are: ? IORegistryEntryGetParentEntry(?,?,?)'
:エラーを与えていた
IORegistryEntryGetParentEntry(service, kIOServicePlane, &parent);
:たとえば、私は、次の関数呼び出しを持っていました:我々は最初の引数を取り、型定義をトレースする場合
kern_return_t IORegistryEntryGetParentEntry(
io_registry_entry_t entry,
const io_name_t plane,
io_registry_entry_t *parent);
は今、我々が得る:
typedef io_object_t io_registry_entry_t; (in IOKit/IOTypes.h)
typedef mach_port_t io_object_t; (in IOKit/IOTypes.h)
typedef mach_port_name_t mach_port_t; (in mach/port.h)
typedef natural_t mach_port_name_t; (in mach/port.h)
そして!私は__darwin_natural_t
を定義したインクルードを持っていませんでした。これは実際にはi386
に含まれていましたが、これは私のシンボリックリンクディレクトリにはありませんでした。それはチェーン完了の追加:私は、この「タイプトレース」を繰り返し
Invalid arguments 'Candidates are: kern_return_t IORegistryEntryGetParentEntry(io_registry_entry_t ,?,io_registry_entry_t*)'
:最後に
typedef __darwin_natural_t natural_t; (in i386/vm_types.h)
typedef unsigned int __darwin_natural_t; (in i386/_types.h)
を、CODANはなるはずだったIORegistryEntryGetParentEntry()
のどのタイプの引数1知っていた、とエラーに変更しました他の議論は、エラーが消えたことがわかった(私はインデックスを再構築する必要はありませんでしたが、YMMV)。もちろん、必要なヘッダを見つける必要があります。が含まれています - 上記は単なる例です!
よくあると厄介な問題。 StOvで解決してもいいです –