簡體   English   中英

創建C .dll並在C#中使用它

[英]creating C .dll and using it in C#

作為C#開發人員,我現在正在嘗試學習C。 創建一個C dll,然后使用我在C#項目中創建的功能似乎很有趣,只是為了熟悉該語言。

為了開發c dll,我使用DEV-C ++,顯然使用C#Visual Studio。

到目前為止,這是我想出的:

C

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

#define NAG_CALL __stdcall 
#define NAG_DLL_EXPIMP  __declspec(dllexport)

NAG_DLL_EXPIMP void NAG_CALL Scalars(double, double*);
NAG_DLL_EXPIMP void NAG_CALL Scalars(double in, double *out)
{
  *out = in;
}

在C#中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace TestMyOwnCDLL
{
    public static class MyCDLLWrapper
    {
        [DllImport("TestDLL1.dll")]
        private static extern void Scalars(double invar, ref double outvar);

        public static double CallScalars(double invar)
        {
            double outvar = (double)0.0;
            Scalars(invar, ref outvar);
            return outvar;
        }

    }
}

我已將TastDLL1.dll添加到程序集中並標記為“始終復制”。 但是,當調用該函數時,我得到了BadImageFormatException。 這意味着已找到該dll,但由於某種原因無法執行該dll。

有任何想法嗎? 我使用了以下示例: http : //www.drdobbs.com/cpp/calling-c-library-dlls-from-c/184406285

親切的問候。

解決了錯誤:DEVC ++編譯器在x64上編譯,而c#應用程序的目標平台設置為x86。 將目標平台更改為x64可解決該錯誤。

現在,是否有可能為C dll編譯到AnyCPU?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM