アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前、Cで書かれているプログラムがあり、
今回、マネージプログラム上(.net framework)でソースを
そのまま流用しようとしています。

貼り付けたのはいいのですが、コンパイルすると以下のような
エラーが出力されてしまいます。

たぶん、cのライブラリ(関数)を使用しているからだと思うのですが、
対処方法が一向に分かりません。


TestDll error LNK2001: 外部シンボル ""int __cdecl sprintf(char *,char const *,...)" (?sprintf@@$$J0YAHPADPBDZZ)" は未解決です。
TestDll error LNK2001: 外部シンボル ""char * __cdecl strcat(char *,char const *)" (?strcat@@$$J0YAPADPADPBD@Z)" は未解決です。
TestDll error LNK2001: 外部シンボル ""int __cdecl strncmp(char const *,char const *,unsigned int)" (?strncmp@@$$J0YAHPBD0I@Z)" は未解決です。



御存知の方、ご教授お願いいたします。

A 回答 (2件)

★なぜ?


>以前、Cで書かれているプログラムがあり、
>今回、マネージプログラム上(.net framework)でソースを
 なぜ C で書かれたプログラム・ソースをマネージ上で動かそうとしているの?
 移植したいの?
 大幅に書き換える必要が出てきますけど。
 普通にCコンパイラでコンパイルすれば良い。

>たぶん、cのライブラリ(関数)を使用しているからだと思うのですが、
>対処方法が一向に分かりません。
 分かっているのならマニュアルを見ながら.NETの命令で置き換えてみましょう。
 私なら以前にCで書かれているプログラムをそのまま.NETで動くとは思わないので
 最初から書き直しますよ。
・これは移植の仕方の質問ですよね。

この回答への補足

> なぜ C で書かれたプログラム・ソースをマネージ上で動かそうとしているの?
> 移植したいの?
> 大幅に書き換える必要が出てきますけど。
> 普通にCコンパイラでコンパイルすれば良い。


はい、そうです。<移植
既存ソースを流用し、抜き出してDLL化するということですので。

基本的にはマネージで作成し、修正しないといけないところは
修正してもいいかと思っていました。
(使用するライブラリによるものならば)


Cコンパイラでコンパイルすると、アンマネージになってしまいますよね?
これをVB.NETで使おうと思っていますので、マネージのほうが使いやすいなぁ
ということで、こういうことをしようと思っています。


> 分かっているのならマニュアルを見ながら.NETの命令で置き換えてみましょう。
> 私なら以前にCで書かれているプログラムをそのまま.NETで動くとは思わないので
> 最初から書き直しますよ。


もしくは、参照設定に以前使っていたライブラリを
設定すれば、コンパイルエラーがなくなるかなと思ったりもしたのですが。
(新しく付け加えるところは.netでコーディングができるなど)

それだったら、Cでコンパイルしたほうが早いってことでしょうか。

VC++.netでソースを組んだことが無いので、
分からないのですが、

書き直さなければならないほど、違うものなのですか?
てっきり、VCもc++ということで、
そして、CもC++の中で書けるということなので、
できるものだと思っていました。

補足日時:2008/02/13 21:07
    • good
    • 0

★アドバイス


>書き直さなければならないほど、違うものなのですか?
 全く別の言語と思って下さい。
 フロー制御は C/C++ とほぼ同じですが全く違います。
>てっきり、VCもc++ということで、
>そして、CもC++の中で書けるということなので、
>できるものだと思っていました。
 VC++ は C/C++ のほかに C++/CLI の言語もサポートしています。
 ですがアンマネージとは全く違いますので注意して下さい。
 C++ は言語仕様で C 言語の機能をそのまま利用できるようになっています。
 でも C++/CLI(マネージ系) はもう別言語と思って下さい。全然違うので。
>これをVB.NETで使おうと思っていますので、マネージのほうが使いやすいなぁ
 VB.NETを使うならそのままVB.NETに書き換えた方がいいのではないかな。
 どの程度のソース量かにもよりますが小規模なら書き換えてみたらどうでしょう。
>既存ソースを流用し、抜き出してDLL化するということですので。
 マネージで使用できる形に DLL にしないと駄目なのでしょうか?
 ようするに DLL にする必要があるのかを検討して下さい。

この回答への補足

ご返事ありがとうございます。


> VC++ は C/C++ のほかに C++/CLI の言語もサポートしています。
> ですがアンマネージとは全く違いますので注意して下さい。
> C++ は言語仕様で C 言語の機能をそのまま利用できるようになっています。
> でも C++/CLI(マネージ系) はもう別言語と思って下さい。全然違うので。

マネージ系(C++/CLI)とアンマネージ系の
違いが分かるサイトなどありますでしょうか。
(具体的にどういう違いが有るか知りたいと思いますので。)
お手数だとは思いますが、よろしくお願いします。


> VB.NETを使うならそのままVB.NETに書き換えた方がいいのではないかな。
> どの程度のソース量かにもよりますが小規模なら書き換えてみたらどうでしょう。

残念ながら、上記のように違うものという前提が無かったというのもあるのですが、
ある程度の量がありますし、できるだけいじらず、
丸ごと、DLL化もしつつ、マネージコードかもできたらと思っていました。


>>既存ソースを流用し、抜き出してDLL化するということですので。
> マネージで使用できる形に DLL にしないと駄目なのでしょうか?
> ようするに DLL にする必要があるのかを検討して下さい。

DLL化は必要だと思っています。
もしくは、必要でない場合というのはどういう時でしょうか?

補足日時:2008/02/14 16:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!