안녕하세요. 구글링해도 도저히 모르겠어서 올리게 됐습니다.
여기도 관련 글들이 많이 있더군요.
우선 현상은 다음과 같습니다.
호출함수중 유독 구조체 자료형을 사용한 한놈에서 문제가 생겼는데요.
uCAN_SendCANTxFrmae(tx);
라인에서 아래 에러가 뜹니다. (빌드는 성공)
관리 디버깅 도우미 'PInvokeStackImbalance' : 'PInvoke 함수 'WindowsFormsApp2!WindowsFormsApp2.Form1::uCAN_SendCANTxFrmae'에 대한 호출 결과 스택이 불안정하게 되었습니다. 관리되는 PInvoke 시그니처와 관리되지 않는 대상 시그니처가 일치하지 않기 때문인 것 같습니다. 호출 규칙 및 PInvoke 시그니처의 매개 변수와 관리되지 않는 대상 시그니처가 일치하는지 확인하십시오.'
찾아보니
1.
[DllImport("uCANDLL.dll")] 여기서
[DllImport("uCANDLL.dll", SetLastError = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
을 추가해봐라.
.StdCall을 Cdecl등으로 바꿔봐라.
-> 실패
2.
Intptr 및 Marshal.PtrToStructure를 사용해봐라
-> 실패
3. struct를 class로 바꿔봐라
-> 실패
---------------
방법을 알려주시면 정말 감사하겠습니다. 아래는 사용중인 Visual Studio 정보에요.
Microsoft Visual Studio Community 2019
버전 16.1.2
VisualStudio.16.Release/16.1.2+29001.49
Microsoft .NET Framework
버전 4.8.03752
설치된 버전: Community
Visual C++ 2019 00435-60000-00000-AA559
Microsoft Visual C++ 2019
Application Insights Tools for Visual Studio 패키지 9.1.00429.1
Application Insights Tools for Visual Studio
ASP.NET and Web Tools 2019 16.1.429.50124
ASP.NET and Web Tools 2019
Azure App Service 도구 v3.0.0 16.1.429.50124
Azure App Service 도구 v3.0.0
C# 도구 3.1.1-beta4-19281-06+58a4b1e79aea28115e66b06f850c83a3f1fcb6d3
IDE에서 사용되는 C# 구성 요소입니다. 프로젝트 형식 및 설정에 따라 다른 버전의 컴파일러를 사용할 수 있습니다.
F# 4.6용 Visual F# Tools 10.4 16.1.0-beta.19253.3+42526fe359672a05fd562dc16a91a43d0fe047a7
F# 4.6용 Microsoft Visual F# Tools 10.4
IntelliCode 확장 1.0
IntelliCode Visual Studio 확장 세부 정보
Microsoft JVM Debugger 1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
Microsoft MI-Based Debugger 1.0
Provides support for connecting Visual Studio to MI compatible debuggers
Microsoft Visual C++ Wizards 1.0
Microsoft Visual C++ Wizards
Microsoft Visual Studio VC 패키지 1.0
Microsoft Visual Studio VC 패키지
NuGet 패키지 관리자 5.1.0
NuGet Package Manager in Visual Studio. For more information about NuGet, visit
https://docs.nuget.org/
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
ResourcePackage 확장 1.0
ResourcePackage Visual Studio 확장 세부 정보
ResourcePackage 확장 1.0
ResourcePackage Visual Studio 확장 세부 정보
Test Adapter for Boost.Test 1.0
Enables Visual Studio's testing tools with unit tests written for Boost.Test. The use terms and Third Party Notices are available in the extension installation directory.
Test Adapter for Google Test 1.0
Google Test용으로 작성된 단위 테스트와 함께 Visual Studio의 테스트 도구를 사용합니다. 사용 약관 및 타사 고지 사항은 확장 설치 디렉터리에서 확인할 수 있습니다.
Visual Basic 도구 3.1.1-beta4-19281-06+58a4b1e79aea28115e66b06f850c83a3f1fcb6d3
IDE에서 사용되는 Visual Basic 구성 요소입니다. 프로젝트 형식 및 설정에 따라 다른 버전의 컴파일러를 사용할 수 있습니다.
Visual Studio Code 디버그 어댑터 호스트 패키지 1.0
Visual Studio에서 Visual Studio Code 디버그 어댑터를 호스트하기 위한 Interop 계층
Visual Studio Tools for CMake 1.0
Visual Studio Tools for CMake
Visual Studio Tools for CMake 1.0
Visual Studio Tools for CMake
일반적인 Azure Tools 1.10
Azure Mobile Services 및 Microsoft Azure 도구에서 사용할 일반적인 서비스를 제공합니다.
[최초 등록일: ]
[최종 수정일: 2/27/2020]