gcc(mingw32)를 사용하여 정적 라이브러리로 DLL 컴파일
php 편집기 Baicao에서는 gcc(mingw32)를 사용하여 정적 라이브러리로 DLL을 컴파일하는 방법을 소개합니다. 개발 프로세스 중에는 다른 프로젝트에서 쉽게 호출할 수 있도록 정적 라이브러리를 DLL로 패키징해야 하는 경우가 많습니다. 정적 라이브러리로 DLL을 컴파일하기 위해 gcc(mingw32)를 사용하는 방법은 비교적 간단하며 특정 단계를 따르기만 하면 됩니다. 먼저 mingw32 및 gcc 컴파일러가 설치되어 있는지 확인하십시오. 그런 다음 명령줄에 gcc -shared -o libname.dll libname.a를 입력하여 DLL 파일을 생성합니다. 이렇게 하면 다른 프로젝트에서 사용할 수 있도록 정적 라이브러리를 DLL로 쉽게 컴파일할 수 있습니다.
질문 내용
외부 도구(예: cgo)로 생성된 정적 라이브러리가 있는데 libsecondary.a라고 부르겠습니다. "libsecondary.a"를 종속성으로 포함하면서 동적 라이브러리를 생성하려고 합니다. libsecondary.h에서 onprocessinit()라는 함수를 내보내고 dll_process_attach 이벤트에서 호출합니다.
공유 라이브러리 생성을 시도했지만 작동하지 않는 것 같습니다. x86_64-w64-mingw32-share-l. -lsecondary -static-libgcc -static-libstdc++ -static .dllmain.c
오류 출력은 다음과 같습니다. dllmain.c:(.text+0x9b): 'onprocessinit'에 대한 정의되지 않은 참조, 무슨 일이 일어나고 있나요?
헤더 파일 libsecondary.h입니다
으아악dllmain.c입니다
65be0f35ebbcbc내보낸 golang 함수입니다(go build -buildmode=c-archive를 사용하여 컴파일한 함수)
/* code generated by cmd/cgo; do not edit. */ /* package command-line-arguments */ #line 1 "cgo-builtin-export-prolog" #include <stddef.h> #ifndef go_cgo_export_prologue_h #define go_cgo_export_prologue_h #ifndef go_cgo_gostring_typedef typedef struct { const char *p; ptrdiff_t n; } _gostring_; #endif #endif /* start of preamble from import "c" comments. */ /* end of preamble from import "c" comments. */ /* start of boilerplate cgo prologue. */ #line 1 "cgo-gcc-export-header-prolog" #ifndef go_cgo_prologue_h #define go_cgo_prologue_h typedef signed char goint8; typedef unsigned char gouint8; typedef short goint16; typedef unsigned short gouint16; typedef int goint32; typedef unsigned int gouint32; typedef long long goint64; typedef unsigned long long gouint64; typedef goint64 goint; typedef gouint64 gouint; typedef size_t gouintptr; typedef float gofloat32; typedef double gofloat64; #ifdef _msc_ver #include <complex.h> typedef _fcomplex gocomplex64; typedef _dcomplex gocomplex128; #else typedef float _complex gocomplex64; typedef double _complex gocomplex128; #endif /* static assertion to make sure the file is being used on architecture at least with matching size of goint. */ typedef char _check_for_64_bit_pointer_matching_goint[sizeof(void*)==64/8 ? 1:-1]; #ifndef go_cgo_gostring_typedef typedef _gostring_ gostring; #endif typedef void *gomap; typedef void *gochan; typedef struct { void *t; void *v; } gointerface; typedef struct { void *data; goint len; goint cap; } goslice; #endif /* end of boilerplate cgo prologue. */ #ifdef __cplusplus extern "c" { #endif extern __declspec(dllexport) void onprocessinit(); #ifdef __cplusplus } #endif
Solution
와우, 답은 인수 위치입니다,
x86_64-w64-mingw32 -shared -static-libgcc -static-libstdc++ -static .dllmain.c .libsecondary.a
뒤로 입력하면 libsecondary.a에서 참조를 찾을 수 없습니다. 맙소사...
위 코드는 syscall.NewLazyDLL이 LoadLibraryA를 호출하고 DLL_PROCESS_ATTACH에 잠겨 있기 때문에 로드 시 교착 상태에 빠지므로 해결 방법은 CreateThread를 사용하고 스레드 내에서 golang 내보낸 함수를 실행하는 것입니다. :)
위 내용은 gcc(mingw32)를 사용하여 정적 라이브러리로 DLL 컴파일의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











원본 콘텐츠의 의미를 변경하지 말고, 콘텐츠를 미세 조정하고, 콘텐츠를 다시 작성하지 마세요. Redmi Note13RPro는 뛰어난 성능을 제공할 뿐만 아니라 모든 사람에게 더 나은 사용자 경험을 제공합니다. 편안한 사용자 경험을 제공하는 Redmi Note13RPro에는 글꼴 조정 기능이 탑재되어 사용자가 휴대폰에 맞게 글꼴을 조정할 수 있습니다. Redmi Note13R Pro의 글꼴 크기를 조정하는 방법을 알고 싶다면 살펴보세요. Redmi Note13RPro에서 글꼴 크기를 조정하는 방법은 무엇입니까? 1. 설정 앱을 엽니다. 2. 맨 아래로 스크롤하여 '디스플레이'를 선택하세요. 3. "텍스트 크기"를 클릭하세요. 4. 이 화면에서 슬라이더를 드래그하여 글꼴 크기를 조정하거나 사전 설정된 글꼴 크기를 선택할 수 있습니다. 5. 조정이 완료되면 "확인"을 눌러 저장하세요.

typedef struct는 C 언어에서 구조 사용을 단순화하기 위해 구조 유형 별칭을 만드는 데 사용됩니다. 구조 별칭을 지정하여 기존 구조에 새 데이터 유형의 별칭을 지정합니다. 향상된 가독성, 코드 재사용 및 유형 확인 등의 이점이 있습니다. 참고: 별칭을 사용하기 전에 구조를 정의해야 합니다. 별칭은 프로그램에서 고유해야 하며 선언된 범위 내에서만 유효해야 합니다.

Redmi Note13RPro는 최근 매우 인기 있는 휴대폰입니다. 그러나 많은 사용자들이 이 휴대폰을 처음 사용하기 때문에 Redmi Note13RPro를 컴퓨터에 연결하는 방법을 모릅니다. 에디터가 설명을 해드립니다. 자세한 튜토리얼 소개가 제공됩니다. Redmi Note13RPro를 컴퓨터에 연결하는 방법은 무엇입니까? 1. USB 데이터 케이블을 사용하여 Redmi 휴대폰을 컴퓨터의 USB 인터페이스에 연결합니다. 2. 휴대폰 설정을 열고 옵션을 클릭한 후 USB 디버깅을 켭니다. 3. 컴퓨터에서 장치 관리자를 열고 모바일 장치 옵션을 찾으세요. 4. 모바일 장치를 마우스 오른쪽 버튼으로 클릭하고 드라이버 업데이트를 선택한 다음 업데이트된 드라이버 자동 검색을 선택합니다. 5. 컴퓨터가 자동으로 드라이버를 검색하지 못하는 경우,

Redmi Note13RPro 휴대폰에는 소프트웨어 기능 측면에서 다양한 스마트 도구가 통합되어 있습니다. 그 중 사진에서 텍스트 콘텐츠를 빠르고 정확하게 추출하는 것은 Redmi Note13RPro가 사진에서 텍스트를 추출하는 방법을 소개합니다. Redmi Note13RPro의 사진에서 텍스트를 추출하는 방법은 무엇입니까? Xiaomi QR 코드 스캔 기능을 사용하고 휴대폰에서 QR 코드 스캔 애플리케이션을 열고 사진 아이콘을 클릭하고 사진을 선택한 다음 오른쪽에 있는 "텍스트 인식" 옵션을 클릭하면 사진 속 텍스트를 성공적으로 추출할 수 있습니다. 휴대폰 앨범을 통해 운영합니다. 휴대폰 앨범에서 텍스트를 추출해야 하는 사진을 찾아 사진 아래의 "더보기"를 클릭한 후 "텍스트 추출"을 선택하면 필요에 따라 텍스트를 복사하거나 저장할 수 있습니다. WeChat 미니 프로그램을 사용하세요. 오픈 마이크로

전체 Huoba는 모두가 다양한 플랫폼에서 경험할 수 있는 매우 재미있는 캐주얼 퍼즐 게임입니다! 이 게임은 잠금 해제되기를 기다리는 수많은 흥미진진한 레벨을 제공합니다. 각 레벨은 참신함과 도전으로 가득 차 있어 질문에 답하고 새로운 게임 콘텐츠를 잠금 해제하는 흥미로운 모험을 경험할 수 있습니다. 그렇다면 Huoba의 전체 레벨을 클리어하는 방법은 무엇입니까? 오늘은 "Whole Life"의 모든 레벨에 대한 완전한 가이드를 제공합니다. 레벨을 통과하는 데 문제가 발생하면 참조할 수 있습니다! "The Whole Life"의 모든 레벨에 대한 "The Whole Life" 완전한 가이드 "The Whole Life"의 모든 레벨에 대한 완전한 가이드 그녀가 새해 전날을 볼 수 있도록 도와주고, 여동생이 쓰레기 늑대와 할머니를 식별하도록 도와주세요 어린 소녀가 위험에서 벗어날 수 있도록 돕기 위해 야외 모험은 아피아오를 보지 못한 척하고 다시 변신합니다. 인간형은 오랑우탄이 인간형으로 변하도록 도왔습니다. 뒷좌석에 있던 누군가는 침착하게 여자 유령을 처리했습니다. 침착하고 여성 유령을 처리했습니다.

전체 Huoba는 Douyin에서 매우 인기 있는 재미있는 레벨 깨기 게임입니다. 게임에는 모든 사람이 도전할 수 있는 다양한 레벨이 있습니다! 게임 레벨 "Journey to the West Beauty"에서는 "Journey to the West"의 여성 캐릭터가 자신의 위치로 돌아갈 수 있도록 모든 사람이 도와야 합니다. 다음은 편집자가 제공한 게임 "Whole Life" 완료를 위한 가이드입니다. Journey to the West의 아름다움은 Journey to the West의 여성 캐릭터가 통과하는 방법을 모르는 친구들을 도와줍니다. 게임을 살펴보겠습니다. 도움이 되기를 바랍니다. 'Whole Life' 서유기 미인은 서유기의 여성 캐릭터가 자신의 자리로 돌아가도록 돕는다. 1. 스크롤을 클릭하면 여성 캐릭터가 나타납니다. 2. 백골 정령과 공작 정령은 클릭하여 동작을 전환해야 합니다. 3. 대답은 아래 그림과 같습니다. Live"에는 모든 레벨에 대한 완전한 가이드가 있어 그녀가 올해의 감시자가 되도록 돕고, 여동생이 쓰레기와 늑대를 식별하도록 돕고, 할머니는 어린 소녀가 위험에서 탈출하고 야외 모험을 할 수 있도록 도와줍니다.

"Dust White Forbidden Zone"의 군함새는 어떻습니까? 게임에는 플레이어가 선택하고 사용할 수 있는 강력한 무기가 많이 있습니다. 에디터는 플레이어가 프리깃버드 무기의 자세한 속성 소개를 정리하는 데 도움이 되기를 바랍니다. "더스트 화이트 포비든 존" 워쉽버드 무기 소개 목록 무기 정보 무기 소개 이름 워쉽버드 레벨 4성형 기관단총 원소 고발열량 1080 탄약 용량 45 리얼버전 1.0 무기 스킬 : 추가 지원 지원 스킬 필드에서 플레이어 이후 사용 무기 사용자의 공격력을 15초 동안 공격력의 13.2%/15.4%/17.6%/19.8%/22% 획득합니다. 혁신물질레벨 20: 합성입자*430: 방향족 플라스틱*3, 합성입자*1040: 방향족 플라스틱

전체 Huoba는 Douyin에서 매우 인기 있는 재미있는 레벨 깨기 게임입니다. 게임에는 모든 사람이 도전할 수 있는 다양한 레벨이 있습니다! 게임에서는 "이웃 구출" 레벨에서 모든 이웃을 아래층으로 내려가도록 설득해야 합니다. 다음은 이웃을 구하고 편집자가 가져온 레벨을 통과하기 위해 모든 이웃이 아래층으로 내려가도록 촉구하는 방법입니다. 레벨 통과 방법을 모르는 친구들은 한번 살펴 보시기 바랍니다. 당신을 도울 수 있습니다. '전생' 이웃을 구하고 모두 아래층으로 내려가도록 권유 통관 전략 이웃을 구하고 모두 아래층으로 내려가도록 권유 1. 아래층 누군가 응급처치가 필요하다 2. 아래층 서점에서 절판된 학습 자료를 판매한다 3. 아래층 쓰레기통에 판지 상자가 많이 있습니다 4. 데이트에 동의합니다. 먼저 아래층으로 가십시오 5. 당신의 형제가 우리 커뮤니티에 홍보하기 위해 왔습니다 6. 누군가 새로운 낚시터를 발견했습니다 7. 고양이 통조림을 아래층으로 드래그하십시오 8. 포크로
