
以前、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)" は未解決です。
御存知の方、ご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
★なぜ?
>以前、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++の中で書けるということなので、
できるものだと思っていました。
No.2
- 回答日時:
★アドバイス
>書き直さなければならないほど、違うものなのですか?
全く別の言語と思って下さい。
フロー制御は 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化は必要だと思っています。
もしくは、必要でない場合というのはどういう時でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# Cの関数の引数のconst *charについて 5 2023/04/25 13:05
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部依存関係について
-
LNK2019: 外部シンボル どのよ...
-
LNK2001(Pro*c)
-
ilink32について。'__setargv__...
-
MFC C++ と C++/CLI の文字列
-
wsprintfのエラーについて
-
外部シンボル未解決 LNK2001
-
外部シンボルの未解決のエラー
-
『外部シンボル~未解決です。...
-
リンカのエラー
-
Windowsアプリケーションをどう...
-
Visual C++6.0を使っていての質問
-
エラー 未解決の外部シンボル
-
C++ Builderでユニットの追加
-
error LNK2001について
-
C言語のエラー LNK1120: 外部参照
-
C++でのエラー LNK2001
-
ビルドする時のエラー。(初心...
-
コンパイルエラー
-
gdiplusのリンクエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
外部シンボルの未解決のエラー
-
LNK2019: 未解決の外部シンボル...
-
LNK2019: 外部シンボル どのよ...
-
IP Helper APIを使うとエラーが...
-
gdiplusのリンクエラー
-
LNK2001(Pro*c)
-
C++STLについての質問です。
-
C++ Builderでユニットの追加
-
エラーの内容教えてください
-
C言語のエラー LNK1120: 外部参照
-
VC++/MFCで error LNK2001
-
エラー 未解決の外部シンボル
-
実行ファイルの容量を減らした...
-
Windowsアプリケーションをどう...
-
クラスを使ったC++の関数を...
-
質問させてください。
-
コンパイルエラー
-
リンカのエラー
おすすめ情報