Viual C++ 2010 でエラー:link error 1104

このQ&Aのポイント
  • Viual C++ 2010 で学習中の初心者が、Windows Form用のサンプルプログラムをビルドしようとすると、link error 1104が発生し、ビルドできない。どう修正すればいいか教えてください。
  • 参考サイトのForm1_Paint()関数のコードを入力し、フォーム上に三角関数の値を表示するプログラムを作成中。最初に成功したが、表示の書式を変更した後にlink error 1104が発生し、ビルドできなくなった。
  • Viual C++ 2010の初心者がWindows Form用のサンプルプログラムをビルドしようとしているが、link error 1104が出てきて、どうすれば修正できるか分からない。どなたか助けていただけないでしょうか?
回答を見る
  • ベストアンサー

Viual C++ 2010 でエラー

Visual C++ 2010で学習中の初心者です。 あるサイトにあったWindows Form用のサンプルプログラムを作ってビルドしようとしていますが、link error 1104 というのが出てうまくいきません。 フォーム上に三角関数の値を表示するという簡単なもので、最初にやった時にはできたのですが、表示の書式を少し変更してみたら、このエラーメッセージが出てきてどうしてもビルドできません。 参考にしているサイトは次のものです。 http://ishidate.my.coocan.jp/vcpp10_2/vcpp10_2.htm この中のForm1_Paint() 関数のコードをそのまま入力したのが以下のコードです。 private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Graphics^ g = e->Graphics; String^ string1; double radian; g->DrawString(" angle sin cos ", Font,                       Brushes::Black,10,20); g->DrawString("------------------------------ ------", Font, Brushes::Black, 10,35); for(int angle=0; angle<=90; angle += 10) { radian = angle*Math::PI/180.0; string1 = String::Format(" {0,3} {1,7:F7} {2,7:F7} ", angle, Math::Sin(radian), Math::Cos(radian)); g->DrawString(string1, Font, Brushes::Black, 10, 50+angle*2); } }// end function 最初に成功したときのフォームの出力の画面写真を添付してあります。 やりたかったことは String::Format() 関数の{ }の中の数字を変えて表示を確認したかっただけなのですが、このエラーはどうすれば修正できるのか、ご存知の方、どうぞよろしく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

1104はファイルが開けない場合のエラーです。 どのファイルが開けないのか、エラーメッセージに書かれていませんか? リンカ ツール エラー LNK1104 https://msdn.microsoft.com/ja-jp/library/ts7eyw4s.aspx > 最初にやった時にはできたのですが、 例えばですが、 最初にやったときに起動した.exeファイルが動きっぱなし、画面は消えてもプロセスは残ってるとかって状況だったら、リンクして新しい.exeを作るのに動作している古い.exeに上書きできなくてエラーだとか。

papashiroSooke
質問者

お礼

早速に回答を頂き、有難うございます。 確かに開けないファイルがあるということで、そのファイルは.exeファイルです。エラーメッセージは次のようなものです。 1>LINK : fatal error LNK1104: cannot open file 'C:\Users\Shiro\Documents\Visual Studio 2010\Projects\WindowsForm1\Debug\WindowsForm1.exe' ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== もしこれが開きっぱなしなので修正してビルドできないのだとすると、それを閉じるにはどうすればよいのでしょうか?

papashiroSooke
質問者

補足

CTR + F5 でプログラムを開始すると、コードを修正した後でもビルドできることがわかりました。これで問題解決です。 ご迷惑をおかけしました。

関連するQ&A

  • C# フォームプログラミングで

    public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { //Graphics grfx = CreateGraphics(); } private void Form2_Paint(object sender, PaintEventArgs e) { Form2 form2; form2.Paint += new PaintEventHandler(PaintHandler1); } static void PaintHandler1(object objSender,PaintEventArgs e) { Graphics grfx = e.Graphics; grfx.DrawString("test",Font font,Brushes.Black,0,0);//←ここでエラー } } このように書くと「引数を2個指定できる、メソッド DrawString のオーバーロードはありません」 というエラーがでてフォームに文字を表示できません 最初に「空のプロジェクト」で作れば普通にDrawStringで文字を表示できるのですが 「Windowsフォーム」を選んでからだと表示できないのはなぜでしょうか? 何がいけないのでしょう。

  • 【VB2008】 .MouseEnter時にe.Graphics.DrawString~をする方法

     今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  ボタンの文字を見やすくするため影付き文字にいたしておりますが (下のコード1になります),このボタンにMouseEnterした際に, クリックできることが分かりやすいよう影の色を変えようと思ったのですが やり方が見つけられません...  <コード1>  Private Sub Button1_Paint(ByVal sender As   Object, ByVal e As System.Windows.Forms.PaintEventArgs) _   Handles Button1.Paint     e.Graphics.DrawString("TEST", _     New Font("MS Pゴシック", 10), Brushes.Black, 81, 11)     e.Graphics.DrawString("TEST", _     New Font("MS Pゴシック", 10), Brushes.Red, 80, 10) End Sub  <トライしたコード>  Private Sub Button1_MouseEnter(ByVal sender As   Object, ByVal e As System.EventArgs) _   Handles Button1.MouseEnter     e.Graphics.DrawString("Test", _     New Font("MS Pゴシック", 10), Brushes.White, 81, 11)     e.Graphics.DrawString("Test", _     New Font("MS Pゴシック", 10), Brushes.Red, 80, 10)  End Sub  エラー「'Graphics'は'System.EventArgs'のメンバではありません」と なるのは当然だと思うのでございますが,引数「e As ~」を書き直すなどいたしましても 通りませんorz  別の方法で「.Paint時に描いた文字色はそのままで,.MouseEnter時に .ForeColorを変えれば...」などと考えましたが,ButtonのTextが .Paintで描いた文字より上にくるのでうまくできませんでした...  もしとんちんかんなご質問でしたら申し訳ございません.何かよさそうな 方法がございましたらご紹介いただけないでしょうか.  もしお詳しい方がいらっしゃいましたら,是非ともアドバイスいただきたく お願い申し上げます.

  • C#でピクチャーボックスへの文字列描画について

    C#でピクチャーボックスへの文字列描画について DOBON.NETからコピペです //PictureBox1のGraphicsオブジェクトを取得 Graphics g = PictureBox1.CreateGraphics(); string drawString= @"智に働けば角が立つ。情に棹させば流される。 意地を通せば窮屈だ。とかくに人の世は住みにくい。"; //Fontを作成 Font fnt = new Font("MS ゴシック", 12); //文字列を表示する範囲を指定する RectangleF rect = new RectangleF(10, 10, 100, 200); //rectの四角を描く g.FillRectangle(Brushes.White, rect); //文字を書く g.DrawString(drawString, fnt, Brushes.Black, rect); //リソースを開放する fnt.Dispose(); g.Dispose(); 自分で使ってるピクチャーボックスは動的生成してるので picbox[i] という感じになってます この場合 初めの宣言の時は picbox = new System.Windows.Forms.PictureBox[pic_cnt]; for (i = 0; i < n) { picbox[i] = new System.Windows.Forms.PictureBox(); Graphics g = picbox[i].CreateGraphics(); <中略> } で大丈夫なのでしょうか? 文字列は描画されないし、エラーもでないので どこが間違っているのかわかりません… 説明不足のところがあれば書いてください あと、修復場所を指摘してくださればありがたいです

  • paint()以外でサブ関数を作りたい

     今晩は、java初心者です、宜しくお願いします。  下の様なウインドウに文字を書くサブ関数を作りましたが、うまく実行出来ません。  しかし、public void paint( Graphics g){ }の中に書いてやるとうまく文字が表示されます。  何故か理由が分かりません。  public void paint( Graphics g ){ }は、Componentクラスのメッソドをオーバーライドしている だけなので、別名のサブ関数で「Graphics g」を引数にとれば同じ考えだと思うのですが、 実行出来ない理由が理解できません。  public void drawLetter( Graphics g )としても、エラーが出るばかりです。  その原因が分かりません、宜しくお願いします。 ==================================================================== public void drawLetter( ) { Graphics aa = getGraphics() ; aa.setFont( new Font( "MS ゴシック" , Font.BOLD , 15 ) ) ; aa.setColor( Color.green ) ; aa.drawString( "String" , 0 , 0 ) ; } ============================================================= public class P1 extends Applet { public void init() { setBackground( Color.cyan ) ; setSize( 600 , 600 ) ; drawLetter( ) ; } public void drawLetter( ) { Graphics aa = getGraphics() ; aa.setFont( new Font( "MS ゴシック" , Font.BOLD , 15 ) ) ; aa.setColor( Color.green ) ; aa.drawString( "String" , 0 , 0 ) ; } public void paint( Graphics g ) { g.setColor( Color.RED ) ; g.drawOval( 300 , 300 , 70 , 70 ) ; g.setColor( Color.RED ) ; g.fillOval( 200 , 200 , 30 , 30 ) ; /* g.setFont( new Font( "MS ゴシック" , Font.BOLD , 15 ) ) ; g.setColor( Color.BLUE ) ; g.drawString( "Orbit" , 50 , 50 ) ; */ } } =======================================================================

    • ベストアンサー
    • Java
  • ペイント時のチラツキ予防方法について

    現在、下記のpaint関数がrepaint関数を使って50ミリ秒きざみで呼ばれます。すると、画面がチラツクのです。 良い方法はありませんでしょうか? ちなみにdrawImageしている絵は最初の一回だけ描画して、 その絵の上にdrawStringを使ってミリ秒単位で字が書かれるのです。 ************************************************** public void paint(Graphics g) { if (g.drawImage(im, 0, 0, this) != true) { System.out.println("Song_ng"); }else{ //A描画 g.setColor(Color.black); g.setFont(FontA); g.drawString(strTitleA, 90, 25); //B描画 g.setColor(Color.black); g.setFont(FontB); g.drawString(strTitleB, 5, 55); //C描画 g.setColor(Color.black); g.setFont(FontC); g.drawString(strTitleC, 15, 85); //D描画 g.setColor(Color.black); g.setFont(FontD); g.drawString(strTitleD, 105, 120); } } ************************************************* 私なりに画面のチラツキ防止のためにupdate関数を下記のように修正したのですが、チラツキが良くはなりません。 ************************************************* public void update(Graphics g){ paint(g); } *************************************************

    • ベストアンサー
    • Java
  • VB2010 でのPictureboxのフォント指定

    VB2010 でのPictureboxのフォント指定 現在 Pictureboxのフォントをプログラムの先頭で定義しているのですが、 '------------------------------------------------------------------------- Dim fnt As New Font("MS ゴシック", 9) With PictureBox1 .Image = New Bitmap(.Size.Width, .Size.Height) g1 = Graphics.FromImage(.Image) g1.Clear(.BackColor) End With g1.DrawString("TEST" fnt, Brushes.Black, IX,IY) '------------------------------------------------------------------------- 下記のようにループ内で指定したいのですが、どう定義すればいいでしょうか。 For i=1 to 10 <------------------------ここでfont指定したい g1.DrawString("TEST" fnt, Brushes.Black, IX,IY) next

  • なぜForm型にキャストするのでしょう?

    using System; using System.Drawing; using System.Windows.Forms; class PaintHello { public static void Main() { Form form = new Form(); form.Text = "Paint Hello"; form.BackColor = Color.White; form.Paint += new PaintEventHandler(MyPaintHandler); Application.Run(form); } static void MyPaintHandler(object objSender,PaintEventArgs pea) { Form form = (Form)objSender;//←この部分が分かりません。 Graphics grfx = pea.Graphics; grfx.DrawString("Hello,world!", form.Font, Brushes.Black, 0, 0); } } C#の勉強をしているのですが、イベントを発生させるためにデリゲートに自分で作ったメソッドを 引数として送るというのは理解できるのですが、 このMyPaintHandlerのobject objSender という部分が、書籍の説明だと「objSenderはForm型のオブジェクトなのでキャストはうまくいく」 と書かれています。 object型というのを調べるとSystem名前空間にObjectというクラスがあるのですが、これはすべてのクラスのルートであり、、、とMSDNに書かれていて、なぜForm型と言えるのかわかりません。 そもそもこのキャストはなぜ必要なのでしょう。お願いします。

  • java初心者です。座標取得と図形表示について

    マウスをクリックするとその座標を表示するプログラムです。 画面には常に二つの四角形が表示されていて、どこをクリックしたかによって表示が変わるというものです。 (オレンジの四角形内をクリックした場合、 X:100 オレンジ Y:100 オレンジ のように表示します。) ですが、私が組んでみたプログラムでは図形表示が一瞬だけになってしまいます。 また、ウインドウの大きさを動かしてみると一瞬移っては消えてしまうという状態です。 それから、「オレンジ」などの日本語表示がうまくいかず「□□□」のように表示されてしまいます。 これらの問題を解決するにはどこをどう修正したらよいでしょうか? 以下が初心者なりに組んでみたソースです。 import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.Toolkit; import java.awt.Graphics2D; import java.awt.Graphics; import java.awt.Font; import java.awt.Rectangle; import java.lang.String; import java.lang.System; import javax.swing.JFrame; import javax.swing.JPanel; public class kadai33 extends JFrame { private static final long serialVersionUID = 1L; public kadai33() { add(new DrawPanel()); } public static void main(String[] args) { Toolkit.getDefaultToolkit().setDynamicLayout(true); JFrame f = new kadai33(); f.setTitle("マウスの座標を表示"); f.setDefaultCloseOperation(EXIT_ON_CLOSE); f.setBackground(Color.WHITE); f.setSize(400, 750); f.setVisible(true); } class DrawPanel extends JPanel implements MouseListener { int x; int y; public DrawPanel() { setBackground(Color.white); addMouseListener(this); } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseClicked(MouseEvent e) { x = e.getX(); y = e.getY(); repaint(); } public void paint(Graphics g) { Font font=new Font("Arial",Font.PLAIN,16); super.paintComponent(g); //super.paint(g); Graphics2D g1 = (Graphics2D)this.getGraphics(); Rectangle rect = new Rectangle(); rect.setRect(50,50,200,200); g1.setColor(Color.ORANGE); g1.fill(rect); Graphics2D g2 = (Graphics2D)this.getGraphics(); Rectangle rect2 = new Rectangle(); rect2.setRect(150,350,150,150); g2.setColor(Color.GREEN); g2.fill(rect2); Graphics2D g3 = (Graphics2D)this.getGraphics(); Rectangle rect3 = new Rectangle(); rect3.setRect(50,650,200,50); g3.setColor(Color.BLACK); g3.fill(rect3); if(x>=50 && x<=250 && y>=50 && y<=250){ super.paintComponent(g); String sx = String.format("X:%d", x); String sy = String.format("Y :%d", y); g.setFont(font); g.setColor(Color.BLACK); g.drawString(sx, 65, 670); g.drawString(sy, 65, 690); Graphics2D g4 = (Graphics2D)g; g4.setFont(font); g4.setColor(Color.WHITE); g4.drawString("オレンジ",120,670); g4.drawString("オレンジ",120,690); } if(x>=150 && x<=300 && y>=350 && y<=500){ super.paintComponent(g); String sx = String.format("X:%d", x); String sy = String.format("Y :%d", y); g.setFont(font); g.setColor(Color.BLACK); g.drawString(sx, 65, 670); g.drawString(sy, 65, 690); Graphics2D g5 = (Graphics2D)g; g5.setFont(font); g5.setColor(Color.WHITE); g5.drawString("グリーン",120,670); g5.drawString("グリーン",120,690); } else{ super.paintComponent(g); String sx = String.format("X:%d", x); String sy = String.format("Y :%d", y); g.setFont(font); g.setColor(Color.BLACK); g.drawString(sx, 65, 670); g.drawString(sy, 65, 690); Graphics2D g6 = (Graphics2D)g; g6.setFont(font); g6.setColor(Color.WHITE); g6.drawString("対象外",120,670); g6.drawString("対象外",120,690); } } } } 大変困っています。 どうかよろしくお願いいたしますm(__)m

    • ベストアンサー
    • Java
  • PrintDocumentでうまく印字ができません

    PrintDocumentでうまく印字ができません VB2008を使っています。 PrintDocumentを使って画面を伝票に出力しようとしています。(以下のコード) '品名,数量,単価,金額, 最大6行 For i = 0 To 5 If tbGyoIdArray(i).Text <> Nothing Then e.Graphics.DrawString(tbShohinNameArray(i).Text, f1, Brushes.Black, 10, 150 + 20 * i) e.Graphics.DrawString(tbSuryoArray(i).Text, f1, Brushes.Black, 100, 150 + 20 * i) e.Graphics.DrawString(tbTankaArray(i).Text, f1, Brushes.Black, 250, 150 + 20 * i) e.Graphics.DrawString(tbKingakuArray(i).Text, f1, Brushes.Black, 300, 150 + 20 * i) End If Next ところが「DrawString」は引数で指定する開始位置から左詰めで印字するのですが、 数量,単価,金額は右詰めで印刷しないとならないわけです。 そこで、どなたか右詰めで印字する方法を教えて下さい。 もしできないとしたら、どんな方法があるでしょうか。 よろしくお願いします。

  • グラフィックスの読み取りについて。

    Option Strict On 'VisualBasic2008(無料版) Imports System.Drawing.Drawing2D Public Class Form1 Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint Dim myFont As New Font("Arial", 20, FontStyle.Bold) e.Graphics.DrawString("7", myFont, Brushes.Red, 0, 0) End Sub End Class 例えば、こんな感じのプログラムがあるとします。 PictureBox1のサイズは25*25です。 PictureBox1内のグラフィックスの読み取りがしたいのです。 質問__1 ドット単位で625のデータをARGBで読み取り配列に格納したいです。 質問__2 グラフィックスが表示されてる場合は1を代入、表示されてない場合は0を代入、配列に入れたいです。イチゼロデータを作りたいです。 よろしくお願いします。