标签: program-entry-point

如何在不使用WinMain的情况下编写Windows应用程序?

用C/C++编写的Windows GUI应用程序将'WinMain'作为入口点(而不是'main').我对此的理解是编译器生成一个'main'函数,由C Runtime调用.这个'main'函数为GUI设置必要的环境并调用'WinMain'(指定实例句柄等).

简而言之,我认为控制台和GUI应用程序的启动方式有以下不同之处:

控制台应用程序:C运行时 - >'主'功能(手动编码)

GUI应用程序:C运行时 - >'main'函数(编译生成) - >'WinMain'函数(手工编码)

我想验证这种理解并找出如何用一个'main'函数手动编写Windows GUI(即无需编写'WinMain').

c winapi program-entry-point crt winmain

14
推荐指数
3
解决办法
9953
查看次数

C++致命错误LNK1120:1个未解析的外部

导致此错误的原因是什么?我google了它,我发现的前几个解决方案是库和主要功能有问题,但在我的问题中似乎都很好,我甚至重新输入了两个!可能是什么导致了这个?

这可能会有所帮助:

MSVCRTD.lib(crtexew.obj):错误LNK2019:函数_ _tmainCRTStartup中引用的未解析的外部符号WinMain @ 16

#include <iostream>
using namespace std;
int main()
{
    const double A = 15.0, 
                 B = 12.0, 
                 C = 9.0;
    double aTotal, bTotal, cTotal, total;
    int numSold;

    cout << "Enter The Number of Class A Tickets Sold: ";
    cin >> numSold;
    aTotal = numSold * A;

    cout << "Enter The Number of Class B Tickets Sold: ";
    cin >> numSold;
    bTotal = numSold * B;

    cout << "Enter The Number of …
Run Code Online (Sandbox Code Playgroud)

c++ program-entry-point visual-studio-2010 fatal-error

14
推荐指数
3
解决办法
23万
查看次数

创建没有主类的Jar库

今天我刚刚创建了一个Java库.我使用Main类创建它,因为IntelliJ IDEA 14要求我添加一个.但是我希望它是一个普通的库,没有任何Main类.是否可以从这样的项目创建一个jar文件,而没有一个带有main方法的类?如果是这样,你如何创建这样一个罐子.

如果你从不使用它,那么拥有一个main方法似乎有点傻.

java program-entry-point jar intellij-idea

14
推荐指数
2
解决办法
2万
查看次数

为什么在将main声明为`int main(void)`时传递命令行参数时没有错误?

情况1:

void hello(void) {
    //something
}

int main()
{
    hello(1); //error
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

案例2:

int main(void) {
    //something
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

执行:

./a.out something something //No error, Why?
Run Code Online (Sandbox Code Playgroud)

为什么没有错误?main将无法采取任何论点.那么为什么可以从命令行提供参数呢?

c program-entry-point command-line-arguments

14
推荐指数
3
解决办法
882
查看次数

由于没有主模块,因此不会生成任何输出

我写了一个简单的模块叫做Test:

module Test (main) where

main =
  putStrLn "Hello"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过以下命令行编译它时:

ghc Test.hs -o my-program
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[1 of 1] Compiling Test             ( Test.hs, Test.o )

<no location info>: error:
    output was redirected with -o, but no output will be generated because there is no Main module.
Run Code Online (Sandbox Code Playgroud)

haskell program-entry-point

14
推荐指数
2
解决办法
1530
查看次数

为什么你会在C中的main()函数之前使用数据类型?

很多人都熟悉C语言中的hello world程序:

#include <stdio.h>

main ()
{
    printf ("hello world");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么有些在main()函数之前,int如下所示:

int main()
Run Code Online (Sandbox Code Playgroud)

另外,我已经看到void输入的内容()如下:

int main(void)
Run Code Online (Sandbox Code Playgroud)

这似乎是额外的打字,但也许这是一个在其他情况下支付红利的最佳做法?

另外,main()如果你要返回一个字符串,为什么会先加一个int?如果有的话,人们会期望:

char main(void)
Run Code Online (Sandbox Code Playgroud)

关于为什么我们在函数结束时返回0也很模糊.

c program-entry-point

13
推荐指数
3
解决办法
4704
查看次数

为什么main方法在java中是静态的

我听到有人说"如果main不是静态的,那么JVM可以创建一个包含main的类的对象,并通过对象调用main.
但问题是JVM如何知道在重载构造函数的情况下调用哪个构造函数,或者即使有只有一个参数化的构造函数,然后才能通过."

这是正确的理由吗?
因为如何在不进入主函数的情况下创建类的对象?
请就此发表意见.如果这不是正确的理由,那么正确的原因是什么?

java static program-entry-point

13
推荐指数
2
解决办法
4377
查看次数

从main调用pthread_exit可以吗?

当我打电话pthread_exitmain,程序永远不会终止.我期望程序完成,因为我退出程序的唯一线程,但它不起作用.好像挂了.

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

int main(int argc, char *argv[])
{
    printf("-one-\n");

    pthread_exit(NULL);

    printf("-two-\n");
}
Run Code Online (Sandbox Code Playgroud)

Process Explorer显示(仅)线程处于Wait:DelayExecution状态.

根据pthread_exit文件:

在最后一个线程终止后,进程将以退出状态0退出.行为应该就像实现在线程终止时调用带有零参数的exit()一样.

我正在使用Dev-C++ v4.9.9.2pthreads-win32 v2.8.0.0(链接libpthreadGC2.a).

该库似乎是确定(例如,呼叫pthread_selfpthread_createmain正常工作).

是否有什么我不应该调用任何理由pthread_exitmain

c winapi program-entry-point pthreads exit

13
推荐指数
2
解决办法
1万
查看次数

public static void main()访问非静态变量

它表示非静态变量不能用于静态方法.但是public static void main.如何?

java variables static-methods program-entry-point void

13
推荐指数
2
解决办法
5万
查看次数

传递参数1会丢弃指针目标类型的限定符

我的主要功能如下:

int main(int argc, char const *argv[])
{
    huffenc(argv[1]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器返回警告:

huffenc.c:76: warning: passing argument 1 of ‘huffenc’ discards qualifiers from pointer target type

作为参考,huffenc接受char*输入,并执行该功能,样本输入"无意识"通过./huffenc senselessness

这警告意味着什么?

c program-entry-point argv

13
推荐指数
1
解决办法
3万
查看次数