【メモ】C++からC言語を呼び出すための方法

目安時間:約 2分

C++で書いているけど、Cのソースコードを読み込みたいときがある。

 

しかし、普通にC++からCの関数を呼び出すと、

 

というエラーになってしまう。

 

 

調べてみると、C++コンパイラは、マングル(mangle)と呼ばれる仕組みがあり、

 

オーバーロードの実現のためなどに、引数の型やクラス・名前空間名を使って

 

修飾された一意の名前を作成して、引き当てに使っているらしい。

 

しかしCコンパイラはマングリングしないため、

 

マングル前の素の名前になっている。

 

それで引き当てに失敗してしまうということだ。

 

対策としては、C++コンパイラに対して、

 

Cの関数であることを明示し、マングリングしないようにさせる必要がある。

 

 

そのためには、以下のようにするだけで、Cのソースコードを利用できるようになる。

 

 

いいね!

 

■参考

http://www.wagavulin.jp/entry/2017/02/09/215036

 

カテゴリ:C++  [コメント:0]

この記事に関連する記事一覧

コメントフォーム

名前

メールアドレス

URL

コメント

トラックバックURL: 

ページの先頭へ