前提・実現したいこと
はじめまして、初めて質問をします。よろしくおねがいします。
C++の文法で引っかかり質問をいたします。
testcpp という関数をヘッダーファイルで宣言する際にエラーが出てしまいます。
文法のミスがわからず困っています。
「試したこと」に記載した通り、cppファイルに宣言を移せば上手くいくのですが、修正方法がわかりません。
実現したいことは、C言語のプログラムで、C++言語で作った関数を呼び出したいと思っています。
お知恵をいただけませんか。よろしくおねがいします。
発生している問題・エラーメッセージ
プロジェクトの依存関係を確認中... ZDLL.cbproj をビルド中 (Debug, Win32) bcc32 の "zdll_File1.c" コマンド ライン [bcc32 エラー] zdll_Unit1.h(5): E2040 宣言が正しく終了していない 詳細な解析情報 zdll_File1.c(23): #include zdll_Unit1.h 失敗 経過時間: 00:00:00.2
該当のソースコード
C言語とC++言語の混在
1//zdll_Unit1.cpp 2#pragma hdrstop 3#pragma package(smart_init) 4#include "zdll_Unit1.h" 5extern "C" __declspec(dllexport) int testcpp(int i) 6{ 7 return i; 8} 9//zdll_Unit1.h 10#ifndef zdll_Unit1H 11#define zdll_Unit1H 12extern "C" __declspec(dllexport) int testcpp(int); 13#endif 14 15
試したこと
zdll_Unit1.h 内の、
extern "C" __declspec(dllexport) int testcpp(int);
を、zdll_Unit1.cpp へ移動させるとコンパイルが正しく完了します。
他、#include zdll_Unit1H の宣言の順序を上にやったり下にやったりしましたが、駄目でした。
補足情報(FW/ツールのバージョンなど)
RAD Studio 10.3 アカデミック版
Windows10 Professional
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/04 16:38