c dll用于c#项目

时间:2011-07-02 12:44:56

标签: c# c

我在c#

从winform调用一个dll文件

我的dll应该显示一个控制台窗口并获取一个将被转移回c#winform的号码,但它不起作用。

如果我想要一个dll返回一个有效的值。

那么如何使用printfscanf等命令使我的dll工作。

// mydll.cpp : Defines the exported functions for the DLL application.
//

//#include "stdafx.h"
#include<stdio.h>
//#define dll
   extern "C"{  __declspec(dllexport)int  backnum()

   {

    int chek=0,Size=1;
    printf("Hello please  enter a Size for Array max size is  100 \n");

    scanf("%d",&Size);


    return Size;
   }

}

2 个答案:

答案 0 :(得分:1)

  

我的dll应该显示一个控制台窗口

哪个是摩擦,你没有创建一个控制台窗口,而且Winforms应用程序中没有。一个简单的解决方法是在Solution Explorer窗口的Properties,Application选项卡中右键单击Winforms项目,并将Output type更改为“Console Application”。现在,您将获得一个控制台窗口和常规窗体窗口。或者你可以打电话或拨打AllocConsole()。

然而,当你这样做时,你将会遇到其他问题。如果控制台窗口位于常规GUI的前面或后面,那么会出现Z顺序问题吗?如果你从主线程中解锁你的函数,那么你的GUI就会冻结。考虑一下,两者兼而有之可能没有多大意义。不管怎么说都不是典型的用户。

答案 1 :(得分:0)

  

我的dll应该显示一个控制台窗口,并获得一个将被转移回c#winform的号码

如果这确实是一项要求,那么你必须做两件事:

  1. 定义API,以便C#调用能够回读您的号码(例如,作为返回值,或作为C#“out”参数)

  2. 使用Win32 AllocConsole()等API创建控制台窗口

  3.   

    如何使用printf或scanf等命令使我的dll工作?

    确保在安装/运行程序的任何位置包含正确的MSVC运行时库.dll(例如,下载Visual C ++ Redistributable)