C#提示不只定义了一个入口点,请使用/main进行编译以指定包含入口点的类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#提示不只定义了一个入口点,请使用/main进行编译以指定包含入口点的类型相关的知识,希望对你有一定的参考价值。

刚开始学C#,要不停地写小程序,我就创建一个一个的类文件,但是总提示不只定义了一个入口点,请使用/main进行编译以指定包含入口点的类型,比如我有两个类,我把其中一个Main 中的M换为小写 就可以正常运行程序了 要怎么设置啊

解决办法:
VS界面点击:项目-->XX属性-->应用程序
1.在此页有一个启动对象属性设置成你想启动的那个类名就可以了。
2.另外:/main进行编译是指在CMD命令栏使用csc编译多个含Main()函数的类时来指定含入口点类型
参考技术A 你肯定在其他类中写了static void main函数吧,一个项目只能有一个Main函数作为主入口。
当有多个项目多个入口函数时
请右击解决方案选择启动项目。追问

每次都要选择一次吗?我只是在简单的了解C#语法 刚开始学 写一个类 如果想让他运行的话 就要设置一次?

追答

如果你的解决方案中只是单个项目(你应该是单个),可以不用选择这个,不过你要写一个类不能像你下面namespace c____test

class Class1

static void Main(string[] args) //程序运行的起点Main首字母大写

这么写,
你注意下,你的项目中有个program.cs,这个类中也有static void Main(string[] args)函数,这是程序的主入口,是唯一的,那你运行程序时程序到底进Class1还是Program的入口呢?当然会报错啦,修改下你在class1中的函数吧。

追问

修改函数和选择启动项目 是两个方法吗?对我这个问题

本回答被提问者采纳
参考技术B 我是用Visual Studio 2015,用楼上的那种方法刚开始没有搞明白,因为没地方选择新的类,后来琢磨明白了,不能随便创建cs文件,要在“项目”、“添加类”、“Visual C#项”、“类”那里新建一个cs文件并,然后在“项目”、“xxx项目属性”的“启动对象”那里才有新的类可以选择。 参考技术C 只能有一个Main入口(注意首字母大写),否则编译程序搞不成清楚从哪里开始了
你保持一个Main不变,可以使用using不同的类来解决这个问题。追问

我刚开始学,只是再简单的写一些小代码, 我就是写一个创建一个类框架是

namespace c____test

class Class1

static void Main(string[] args) //程序运行的起点Main首字母大写

我就在这个里面写 怎么才可以让我的第二个类也能运行 如果她是正确的话

无法找到入口点 (cpp)

【中文标题】无法找到入口点 (cpp)【英文标题】:Unable to Find an Entry Point (cpp) 【发布时间】:2010-12-05 10:15:43 【问题描述】:

这是一个与this one类似的问题。

我想从 C++ 中导出一个简单的函数,由 C# 通过 PInvoke 调用。这是我的函数定义:

 int fnValue()

    return 42;

这是.h文件中的导出定义:

__declspec(dllexport)  int fnValue();

这就是我 PInvoke 函数的方式:

    [DllImport("WhatDll.dll")]
    public static extern int fnValue();

很简单,对吧?但我有一个

System.EntryPointNotFoundException : 无法找到名为的入口点 DLL“WhatDll.dll”中的“fnValue”

我使用 dumpbin 检查 WhatDll 里面的内容,这就是我所拥有的:

00000000 特性 4CFB5C95 时间日期戳 Sun Dec 05 17:34:13 2010 0.00 版本 1 个序数基数 4个功能 4个名字

序号提示 RVA 名称

   1    2 00011014 ?fnValue@@YAHXZ = @ILT+15(?fnValue@@YAHXZ)

注意函数名fnValue后面有一些乱码。

这很令人费解。有什么想法吗?

【问题讨论】:

【参考方案1】:

试着写

extern "C"__declspec(dllexport)  int fnValue();

【讨论】:

@Thanks,为什么我需要在前面extern "C" 如果前面没有 extern "C",C++ 编译器会将“名称修饰”或“名称修饰”应用于函数名称,以便将更多语义信息从编译器传递给链接器。 extern "C" 告诉 C++ 编译器避免破坏对标识符的引用。【参考方案2】:

如果您使用 c++ 编译器进行编译,请使用 extern "C" 导出或添加 .def 文件来指定导出名称。 另外__stdcall 可能是必要的

【讨论】:

以上是关于C#提示不只定义了一个入口点,请使用/main进行编译以指定包含入口点的类型的主要内容,如果未能解决你的问题,请参考以下文章

C# 无法在未损坏的 C++ 库上找到入口点

C#调用C DLL笔记,提示:无法在 DLL“xxx.dll”中找到名为“xxxx”的入口点

C#调用C DLL笔记,提示:无法在 DLL“xxx.dll”中找到名为“xxxx”的入口点

C#调用C DLL笔记,提示:无法在 DLL“xxx.dll”中找到名为“xxxx”的入口点

程序定义了多个入口点? CS0017 main() 有问题?

Mfc中release下提示未定义入口点,在debug模式下可以正常运行,这是为啥啊,应该怎么解