😊C++/CLIλ₯Ό 톡해 C# 클래슀λ₯Ό C++μ—μ„œ μ‚¬μš©ν•΄λ³΄μž

C++μ—μ„œ Managed 클래슀λ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άλ‹€!

λŒ€λΆ€λΆ„ 글듀이 C#μ—μ„œ λ‹€λ₯Έ μ–Έμ–΄λ‘œ κ°œλ°œν•œ dllμ΄λ‚˜ ν¬νŒ…μ€ λ‚˜μ™€μžˆλŠ”λ° 거꾸둜 ν•˜λŠ” 방법은 μ•ˆλ‚˜μ™€ μžˆλŠ” 것 κ°™μ•„μ„œ μƒˆν•΄λ“€μ–΄ μ‹¬μ‹¬ν•΄μ„œ λ§Œλ“€μ–΄λ³΄λ‹ˆ λ™μž‘ν•˜λŠ”κ΅°μš” κ·Έλž˜μ„œ κ³΅μœ λ“œλ¦½λ‹ˆλ‹€.
μ˜ˆμ‹œλ‘œ μž…λ ₯된 μ£Όμ†Œλ‘œλΆ€ν„° html μ½”λ“œλ₯Ό μŠ€ν¬λž˜ν•‘ν•˜λŠ” 클래슀λ₯Ό λž©ν•‘ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ

C# μ½”λ“œ

namespace ConsoleSharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var scrapper = new SharpScrapperLib.SimpleScraper();
            var html = scrapper.GetHtml("https://www.naver.com");
            System.Console.WriteLine(html);
        }
    }
}

C++ μ½”λ“œ

#include <iostream>
#include <expInteropScrapper.h>

void main()
{
    try {
        auto scrapper = expInterop::expInteropScrapper::create();
        auto html_content = scrapper->getHtml("https://www.naver.com");
        std::cout << html_content << std::endl;

    }
    catch (std::exception ex) {

    }
}

κ²°κ³Ό

6 Likes

정말 μ˜€λž«λ§Œμ— λ“€μ–΄λ³΄λŠ” μ£Όμ œλ„€μš”! C++/CLIλŠ” 과거에 .NET Framework μ‹œμ ˆλΆ€ν„° μ§€μ›λ˜μ–΄μ˜€λ˜ μ—­λ°©ν–₯ μƒν˜Έμš΄μš©μ„± κΈ°λŠ₯μ΄μ—ˆμ£ !

μ΅œκ·Όμ—λŠ” .NET의 κΈ°μ‘°κ°€ λ°”λ€Œκ²Œ λ˜λ©΄μ„œ μ•„μ‰½κ²Œλ„ .NET Core 계톡 λŸ°νƒ€μž„μ—μ„œλŠ” .NET λŸ°νƒ€μž„ 전체λ₯Ό ν˜ΈμŠ€νŒ…ν•˜λŠ” 방식 정도가 μ΅œμ„ μ΄κ³ , μ–Όλ§ˆμ „μ— μ–ΈκΈ‰ν–ˆλ˜ Native AOTλ₯Ό μ΄μš©ν•΄μ„œ λ‹·λ„·μ˜ full featureλ₯Ό ν¬κΈ°ν•˜λŠ” λŒ€μ‹  직접 동적/정적 라이브러리λ₯Ό λ§Œλ“œλŠ” 것 정도가 μ΅œμ„ μΈλ“― ν•©λ‹ˆλ‹€.

https://wikidocs.net/blog/@gellston/6271/ 이곳에도 글을 μ˜¬λ €μ£Όμ…¨λ„€μš” γ…Žγ…Ž

3 Likes

잘 λ΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.
νšŒμ‚¬ 내에 였래된 μ—¬λŸ¬ μ½”λ“œκ°€ λ„ˆλ¬΄ λ§Žμ•„μ„œ μ§ˆμ„œμžˆκ²Œ? μ •λ¦¬ν•˜κΈ°κ°€ 쉽지 μ•Šλ„€μš”.
λ‹€ κ°μ‹Έμ„œ λ§Œμ‘±μ„ μ‹œν‚¬ 수 μ—†λŠ” 것 κ°™μ•„μš” κ·Έλƒ₯ 포기할 건 ν¬κΈ°ν•΄μ•Όλ˜λ‚˜ μ‹ΆκΈ°λ„ν•˜κ΅¬μš”

3 Likes