C言語プログラムをVC++から呼び出すには?

[戻る]
つまる [E-Mail] 2001/02/19(月) 13:39:14
はじめまして、つまると言います。
CもVC++もビギナーレベルです。

今度・仕事で会社で前任者が作ったC言語プログラムに
VC++でインターフェイスを付けることになりました。

インターフェイス部分は問題なくできたのですが、
どうやってC言語で作ったプログラムを呼出そうか、
また、インターフェイスで取得した値をC言語へ
反映するにはどうしたらいいか困っています。

どなたか、「こうしたらいいよ」というのを
ご存知でしたら教えてください。

ku 2001/02/19(月) 22:26:41
現在、何ができて何ができないのか分からないし方法もいろいろあると思うし
実際にC言語のプログラムがどういった形態で提供されるのかも
わからないのだけど、
ソースで提供されるとしたらC言語のヘッダファイルを下記のように
extern "C"で括るようにすればC言語の関数を呼べます
DLLかstaticなライブラリなら、組み込み方が何らかのドキュメントに書いてあるでしょう。
#ifdef __cplusplus
extern "C" {
#endif

元のヘッダファイルの内容

#ifdef __cplusplus
}
#endif

そもそも会社なら隣の人にでも聞いた方が早そうだけど。

つまる [E-Mail] 2001/02/20(火) 09:22:22
Kuさんどうもありがとうございました。

会社でも、他に使える人が誰もいないからビギナーの私がやって
いるのです。
隣の人に聞けたら、質問の書き込みなんてしませんよ(苦笑)。

手元にあるのは、ソースファイルのみです。
Cの解読しながら、VC++でインターフェイス付けてます。

で、教えていただいたextern "c"は、MSDNライブラリから知って、
すでに試し済みでした。
しかし、テンプレートエラーがどうしても回避できず、他の方法を
探しているところです。

ku 2001/02/20(火) 14:30:54
テンプレートはC++の機能だから変ですね。
どういったものか分からないのに違いはないので的確な答えは出せませんが
Cソースは拡張子をCPPに変更しても問題ないので
VCでは拡張子CPPをC++ソースとして認識してくれるので
拡張子を変更してただけでもうまくいくかもしれません。

つまる [E-Mail] 2001/02/21(水) 09:36:54
[[解決]]
kuさん、再度ありがとうございます。

テンプレートは、C++の機能なんですね?
それが入っているっているということは、
手元にあるこれはCとC++の混合言語で
作られてる可能性あるかも...。

まいった。全部VC++で作り直した方が
早いような気がしてきました。

何にしても、もう少し質問を絞り込んで
再度書き込みをさせて頂く事にします。では。

ku 2001/02/21(水) 11:03:52
ビルドしたときに何がエラーを出したのかとかの情報が必要ですね。
1.自分が作成したC++ソースのコンパイルか
2.他人が作成したCソースのコンパイルか
3.リンクか
なんてあたりの情報です。

テンプレートで思い出しましたがソースに
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
という記述がある場合、これの下に
#include <iostream>
#include <vector>
using namespace std;
なんて書くとコンパイルエラーとなります。

これらは
#define new DEBUG_NEW
〜
#endif
より上に書く必要があります。

古いスレッドには追加発言できません。