
以前、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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部依存関係について
-
LNK2001(Pro*c)
-
このプログラムを動かしたいの...
-
visual c++ 2008 でwindows プ...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
Arduinoに関する質問
-
アプリケーションのDLLファイル...
-
visual studio 2019 についての...
-
コンパイル言語とインタープリ...
-
リリースモードとデバッグモー...
-
実行後にコンパイルに失敗しま...
-
コンパイルエラー:ユーザ定義...
-
sys/time.hのインクルードがで...
-
ビルド失敗 指定されたファイ...
-
ソフトの開発言語を調べる方法
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
double型とは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
未解決の外部シンボル
-
LNK2019: 外部シンボル どのよ...
-
C++/CLIでfstream(.NET 3.5)
-
C言語のエラー LNK1120: 外部参照
-
パブリックシンボルとは?
-
popen・pcloseについて
-
プロセスIDの取得の方法。
-
LNK2019: 未解決の外部シンボル...
-
このプログラムを動かしたいの...
-
コンパイルエラー
-
外部シンボルの未解決のエラー
-
C++のエラーの内容について
-
VC++/MFCで error LNK2001
-
PathIsDirectoryを使って
-
open dynamics engine の導入
-
ビルドエラー
-
C言語ソースのオラクルコンパイ...
-
外部シンボル未解決 LNK2001
おすすめ情報