質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

3291閲覧

インスタンス生成時のNullReferenceExceptionについて

furu1122

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/05/26 01:27

前提・実現したいこと

VB.Netで作ったdllのクラスをC#.Netから使用しようとしているのですが、
インスタンス生成時にNullReferenceExceptionが発生してしまいます。
恐らくケアレスミスだと思うのですが、どこが間違っているか教えてください。

発生している問題・エラーメッセージ

System.NullReferenceException:'オブジェクト参照がオブジェクトインスタンスに設定されていません。'

該当のソースコード

c#,

1【Form1.cs】 2public partial class Form1() :Form { 3 public Form1() { 4 InitializeComponent(); 5 } 6 private void btnExecute_Click(object sender, EventArgs e) { 7 LogLibrary.CommonLog.Log loglib = 8 new LogLibrary.CommonLog.Log("log.txt"); 9 //↑ここでNullReferenceException 10 loglib.Write(""); 11 } 12} 13 14【Log.vb】 15Namespace CommonLog 16 Public Class Log 17 Private fileName As String = "default.txt" 18 Public Sub New(file As String) 19 Me.fileName = file 20 End Sub 21 Public Sub Write(ByVal value As String) 22 LogLib.Write(Me.fileName, value) 23 End Sub 24 End Class 25End Namespace

試したこと

ビルドは通っていますし、dllが参照に追加されていることは確認済みです。

補足情報(FW/ツールのバージョンなど)

VisualStudio2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/26 01:45

.NET Framework or Core どっちかとそのバージョンを書いてください。 WinForms アプリでライブラリを参照設定に加えてますか?
YAmaGNZ

2021/05/26 02:10

LogクラスのWriteメソッド内のLogLibが謎なので邪推してしまうのですが、 loglib.Write(""); ここで発生しているとかありませんか? とりあえず例外発生時のStackTraceを見てC#側で発生しているのかVB.NETのDLL側で発生しているのかの切り分けは出来ませんか?
furu1122

2021/05/26 03:01

.Net Frameworkのバージョンは4.7.2です。
退会済みユーザー

退会済みユーザー

2021/05/26 03:13

WinForms アプリでライブラリを参照設定に加えてますか? 他の方が指摘している Log.vb のコードの間違いを直してください。
guest

回答2

0

ベストアンサー

DLL側のソースがあるなら、参照の追加時にDLLを直接追加するのではなく、ソリューションに
"追加"→"既存のプロジェクトの追加"
でDLL側のプロジェクトを追加し、それを参照するようにしてデバッグしましょう。他のソースで例外が起きている可能性もあります。提示されているLog.vbだとコンパイル通らないので、ソースこれだけじゃないですよね?

vbnet

1Log.vb】 2Namespace CommonLog 3 Public Class Log 4 Private fileName As String = "default.txt" 5 Public Sub New(file As String) 6 Me.fileName = file 7 End Sub 8 Public Sub Write(ByVal value As String) 9 LogLib.Write(Me.fileName, value) '←このLogLibってどっから出てきたの? 10 End Sub 11 End Class 12End Namespace

投稿2021/05/26 02:15

編集2021/05/26 02:23
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

furu1122

2021/05/26 03:36

DLL側のソースを追加してデバッグ実行してみたところ、 LogLib.Write(Me.fileName, value) で例外が発生していることがわかりました。ありがとうございました。
guest

0

LogLibraryとはなんでしょうか。
また、LogLibrary.CommonLogとは、LogLibrary.CommonLog.Logは?

生成の対象を間違えてるようにみえますが。

投稿2021/05/26 02:00

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問