第一次尝试在 CLion 中编译 Sciter 项目。继续收到“对‘WinMain’的未定义引用”?

问题描述 投票:0回答:1

正如标题所说,我在编译《Hello,World!》时遇到了困难。来自 sciter.com 的示例。据我所知,我已正确链接所有内容,我确保 DLL 的位架构与我的项目的位架构相匹配,等等。

我已经尝试了几个小时来解决这个问题,并且 sciters 网站之前没有提出过有关该主题的问题。希望有人能指出我正确的方向。

这是编译器输出:

====================[ Build | SciterDemo | Debug ]==============================
"C:\Program Files\JetBrains\CLion 2022.2.1\bin\cmake\win\bin\cmake.exe" --build C:\Users\edwar\CLionProjects\SciterDemo\cmake-build-debug --target SciterDemo -j 12
[0/1] Re-running CMake...
-- Configuring done
-- Linking Sciter
-- Generating done
-- Build files have been written to: C:/Users/edwar/CLionProjects/SciterDemo/cmake-build-debug
[1/1] Linking CXX executable SciterDemo.exe
FAILED: SciterDemo.exe 
cmd.exe /C "cd . && C:\PROGRA~1\JETBRA~1\CLION2~1.1\bin\mingw\bin\G__~1.EXE -g  CMakeFiles/SciterDemo.dir/main.cpp.obj -o SciterDemo.exe -Wl,--out-implib,libSciterDemo.dll.a -Wl,--major-image-version,0,--minor-image-version,0  sciter-js-sdk-main/bin/windows/x64/libsciter.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
C:\Program Files\JetBrains\CLion 2022.2.1\bin\mingw\bin/ld.exe: C:/PROGRA~1/JETBRA~1/CLION2~1.1/bin/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text+0x46): undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

编辑:

这是我的

main.cpp
文件中的代码:

#include "sciter-js-sdk-main/include/sciter-x.h"
#include "sciter-js-sdk-main/include/sciter-x-window.hpp"
#include "include/sciter-win-main.cpp"

class frame: public sciter::window {
public:
    frame() : window(SW_TITLEBAR | SW_RESIZEABLE | SW_CONTROLS | SW_MAIN | SW_ENABLE_DEBUG) {}

    SOM_PASSPORT_BEGIN(frame)
        SOM_FUNCS(
                SOM_FUNC(nativeMessage)
        )
    SOM_PASSPORT_END

    sciter::string nativeMessage() {return WSTR("Hello, World!");}
};

#include "resources.cpp"

int uimain(std::function<int()> run ) {

    sciter::archive::instance().open(aux::elements_of(resources));

    sciter::om::hasset<frame> pwin = new frame();

    pwin->load((WSTR("this://app/main.htm")));

    pwin->expand();

    return run();
}

如您所见,它只有

uimain
,根据 Hello World! 教程是正确的。我不知道这是否会引起问题。

c++ dll mingw-w64 sciter
1个回答
0
投票

您需要包含 include/sciter-win-main.cpp 文件。

参见:源文件

© www.soinside.com 2019 - 2024. All rights reserved.