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 DLL笔记,提示:无法在 DLL“xxx.dll”中找到名为“xxxx”的入口点
C#调用C DLL笔记,提示:无法在 DLL“xxx.dll”中找到名为“xxxx”的入口点
C#调用C DLL笔记,提示:无法在 DLL“xxx.dll”中找到名为“xxxx”的入口点